RETURNS TABLE returns NULL set when called by another RETURNS TABLE - Mailing list pgsql-bugs

From Josh Berkus
Subject RETURNS TABLE returns NULL set when called by another RETURNS TABLE
Date
Msg-id 4B84856D.4080604@agliodbs.com
Whole thread Raw
Responses Re: RETURNS TABLE returns NULL set when called by another RETURNS TABLE  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: RETURNS TABLE returns NULL set when called by another RETURNS TABLE  (Pavel Stehule <pavel.stehule@gmail.com>)
List pgsql-bugs
Pavel, all:

Apparently if you use one returns table function to call a 2nd returns
table function, it returns a recordset which consists entirely of nulls.

Here's the test case:

create table srf_data ( id serial, cat int, val text );
insert into srf_data ( cat, val ) values
( 1, 'josh' ),
( 1, 'selena' ),
( 2, 'bruce' ),
( 2, 'josh' ),
( 3, 'robert' );

create or replace  function srf1 ( this_cat int )
returns table (
        id1 int,
        val1 text )
language sql as $f$
select id, val from srf_data where cat = $1;
$f$;

create or replace function srf2 ( )
returns table (
        id1 int,
        val1 text )
language plpgsql as $f$
begin
return query
select id1, val1 from srf1(1);
return;
end;
$f$;

select * from srf2();

pgsql-bugs by date:

Previous
From: "Simon Ng"
Date:
Subject: BUG #5344: pg_restore some foreign keys missing
Next
From: Tom Lane
Date:
Subject: Re: RETURNS TABLE returns NULL set when called by another RETURNS TABLE