Commit 51158541 authored by Peter Eisentraut's avatar Peter Eisentraut

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.
parent b48b2f87
...@@ -2242,6 +2242,30 @@ drop function sp_id_user(text); ...@@ -2242,6 +2242,30 @@ drop function sp_id_user(text);
-- --
create table rc_test (a int, b int); create table rc_test (a int, b int);
copy rc_test from stdin; 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 $$ create function return_refcursor(rc refcursor) returns refcursor as $$
begin begin
open rc for select a from rc_test; open rc for select a from rc_test;
......
...@@ -1910,6 +1910,28 @@ copy rc_test from stdin; ...@@ -1910,6 +1910,28 @@ copy rc_test from stdin;
500 1000 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 $$ create function return_refcursor(rc refcursor) returns refcursor as $$
begin begin
open rc for select a from rc_test; open rc for select a from rc_test;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment