Re: Re: Returning sets from functions? - Mailing list pgsql-sql

From Tom Lane
Subject Re: Re: Returning sets from functions?
Date
Msg-id 14698.956525521@sss.pgh.pa.us
Whole thread Raw
In response to Re: Returning sets from functions?  (mig@utdt.edu)
List pgsql-sql
mig@utdt.edu writes:
> Consider
>     create function followers(text) returns setof text as 
>           'select id from ids where id > $1 '
>           language 'sql';

> The function seems to work OK:
>     select followers('h');
> does return all indexes after the index 'h'.

> On the other hand,
>     select * from ids where id in (select followers('h'));
> produces the message
>   ERROR:  An operand to the '=' operator returns a set of text,
>         but '=' takes single values, not sets.

Seems to work in 7.0, which actually surprises me quite a bit ;-).
Functions returning sets are only very shakily implemented right now.
We've cured a few bugs since 6.5, but it's going to be difficult
to make much further progress with them until the fabled querytree
redesign happens (which will also bring outer joins and some other
good stuff).  Current plans are to tackle that for 7.2, which might
be out by the end of the year or so.

> Sorry, I forgot part of my question in the previous message:
>   How do you return a "setof" value from a PG/Tcl procedure?

Right now I think you can't ...
        regards, tom lane


pgsql-sql by date:

Previous
From: mig@utdt.edu
Date:
Subject: Re: Returning sets from functions?
Next
From: Richard NAGY
Date:
Subject: translation from ORACLE