Re: Struggling with set-returning functions, seeking advice - Mailing list pgsql-novice

From Tom Lane
Subject Re: Struggling with set-returning functions, seeking advice
Date
Msg-id 13387.1058974511@sss.pgh.pa.us
Whole thread Raw
In response to Struggling with set-returning functions, seeking advice  (Jason Topaz <topaz@panix.com>)
List pgsql-novice
Jason Topaz <topaz@panix.com> writes:
> 1) Note that my first attempt (view "ranges_setview_broken", referring
>    to a pgplsql set function "make_rows") fails.  But when I make a
>    second function with identical signature, but in language 'sql'
>    (it's just a passthrough to my original pgplsql function), suddenly
>    the server error goes away.  This seems strange to me.

It's an implementation artifact: plpgsql uses a different implementation
method to return sets than sql does.  sql's method works both in SELECT
lists and in FROM, plpgsql's only works in FROM.

The trouble with a set function in FROM is that it can't take any
parameters that are extracted from other tables in the query.  There
has been some talk of fixing that by implementing SQL99's LATERAL()
syntax, but we haven't yet wrapped our heads around exactly what would
be involved there.  In the meantime, the way you're doing it is probably
as good as you're going to get.

            regards, tom lane

pgsql-novice by date:

Previous
From: Tom Lane
Date:
Subject: Re: CREATE TYPE with array
Next
From: Joe Conway
Date:
Subject: Re: Struggling with set-returning functions, seeking advice