Re: RETURNS TABLE returns NULL set when called by another RETURNS TABLE

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: RETURNS TABLE returns NULL set when called by another RETURNS TABLE
Дата
Msg-id 162867791002232303h422097d8s13b28d4915724635@mail.gmail.com
обсуждение исходный текст
Ответ на RETURNS TABLE returns NULL set when called by another RETURNS TABLE  (Josh Berkus <josh@agliodbs.com>)
Список pgsql-bugs
2010/2/24 Josh Berkus <josh@agliodbs.com>:
> 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 =C2=A0function srf1 ( this_cat int )
> returns table (
> =C2=A0 =C2=A0 =C2=A0 =C2=A0id1 int,
> =C2=A0 =C2=A0 =C2=A0 =C2=A0val1 text )
> language sql as $f$
> select id, val from srf_data where cat =3D $1;
> $f$;
>
> create or replace function srf2 ( )
> returns table (
> =C2=A0 =C2=A0 =C2=A0 =C2=A0id1 int,
> =C2=A0 =C2=A0 =C2=A0 =C2=A0val1 text )
> language plpgsql as $f$
> begin
> return query
> select id1, val1 from srf1(1);
> return;
> end;
> $f$;
>

there is identifier's conflict - try to use alias

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

Regards
Pavel Stehule

Pavel

> select * from srf2();
>
> --
> Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-bugs
>

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: BUG #5344: pg_restore some foreign keys missing
Следующее
От: Pavel Stehule
Дата:
Сообщение: Re: RETURNS TABLE returns NULL set when called by another RETURNS TABLE