Add tests for PL/pgSQL returning unnamed portals as refcursor

Existing tests only covered returning explicitly named portals as
refcursor.  The unnamed cursor case was recently broken without a test
failing.
This commit is contained in:
Peter Eisentraut 2018-01-10 16:39:13 -05:00
parent b48b2f8793
commit 5115854170
2 changed files with 46 additions and 0 deletions

View File

@ -2242,6 +2242,30 @@ drop function sp_id_user(text);
--
create table rc_test (a int, b int);
copy rc_test from stdin;
create function return_unnamed_refcursor() returns refcursor as $$
declare
rc refcursor;
begin
open rc for select a from rc_test;
return rc;
end
$$ language plpgsql;
create function use_refcursor(rc refcursor) returns int as $$
declare
rc refcursor;
x record;
begin
rc := return_unnamed_refcursor();
fetch next from rc into x;
return x.a;
end
$$ language plpgsql;
select use_refcursor(return_unnamed_refcursor());
use_refcursor
---------------
5
(1 row)
create function return_refcursor(rc refcursor) returns refcursor as $$
begin
open rc for select a from rc_test;

View File

@ -1910,6 +1910,28 @@ copy rc_test from stdin;
500 1000
\.
create function return_unnamed_refcursor() returns refcursor as $$
declare
rc refcursor;
begin
open rc for select a from rc_test;
return rc;
end
$$ language plpgsql;
create function use_refcursor(rc refcursor) returns int as $$
declare
rc refcursor;
x record;
begin
rc := return_unnamed_refcursor();
fetch next from rc into x;
return x.a;
end
$$ language plpgsql;
select use_refcursor(return_unnamed_refcursor());
create function return_refcursor(rc refcursor) returns refcursor as $$
begin
open rc for select a from rc_test;