Re: SRF in SFRM_ValuePerCall mode - Mailing list pgsql-hackers

From dv @ nabble
Subject Re: SRF in SFRM_ValuePerCall mode
Date
Msg-id 32D310430D0E494FBDF9029B644F61F8@dvhome
Whole thread Raw
In response to Re: SRF in SFRM_ValuePerCall mode  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: SRF in SFRM_ValuePerCall mode  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
----- Original Message ----- 
From: "Tom Lane" <tgl@sss.pgh.pa.us>
To: "Heikki Linnakangas" <heikki@enterprisedb.com>
Cc: "dv @ nabble" <dvnabble@gmail.com>; "pgsql-hackers list" 
<pgsql-hackers@postgresql.org>
Sent: Monday, April 28, 2008 5:07 PM
Subject: Re: [HACKERS] SRF in SFRM_ValuePerCall mode


> "Heikki Linnakangas" <heikki@enterprisedb.com> writes:
>> dv @ nabble wrote:
>>> I am working on implementation of custom "C" SRF for our team. The SRF 
>>> uses
>>> SFRM_ValuePerCall mode. I know that sometimes even in SFRM_ValuePerCall
>>> mode
>>> all the rows returned from SRF are "materialized" (for performing JOINs,
>>> for
>>> example).
>
>> Yep, they are unfortunately always materialized. Back when set returning
>> functions were implemented, the original patch did actually support true
>> "value per call" mode, where the whole result set was not materialized.
>> However, it was dropped because of some issues I can't remember off the
>> top of my head. The value-per-call API was committed, so that it was
>> already in place when someone gets around to implement the backend
>> support for it.
>
> That's a rather revisionist view of history ;-)  Value-per-call mode has
> always been there, just not in nodeFunctionscan.c.
>
> If you're not joining to the function result, and you don't need the
> ability to determine its result type on the fly, you could declare it
> as returning a specific rowtype and then call it in the targetlist:
>
> select vpc();

You mean make the function return the only row?
This is not the functionality we need. What we want is to create a SETOF 
function that will
emulate a table and query this "table" with WHERE filter and LIMIT clauses 
to limit the row
count we want to return. We might pass the filter and the limit to the 
function, but we want to
implement it in more natural way.

Thanks,
Denis 



pgsql-hackers by date:

Previous
From: Gregory Stark
Date:
Subject: Re: [SPAM] Re: Proposed patch - psql wraps at window width
Next
From: "Thomas Mueller"
Date:
Subject: Re: Protection from SQL injection