This has broken the regression tests for plperl - see for example
That's because, as Abhijit noted in point 4 below, select foo_srf() no
longer works.

At a minimum those calls need to be removed from the regression tests.

See also my later comments in response to Neil's request of a few days ago.
In particular, I would very much like the callback function renamed to a
simple "return_next".



Bruce Momjian said:
> Mega-patch version applied.  Thanks.
> ---------------------------------------------------------------------------
> Abhijit Menon-Sen wrote:
>> At 2005-05-21 20:18:50 +0530, [EMAIL PROTECTED] wrote:
>> >
>> > > The second issue is where plperl returns a large result set.
>> I have attached the following seven patches to address this problem:
>> 1. Trivial. Replaces some errant spaces with tabs.
>> 2. Trivial. Fixes the spelling of Jan's name, and gets rid of many
>>    inane, useless, annoying, and often misleading comments. Here's a
>>    sample: "plperl_init_all() - Initialize all".
>>    (I have tried to add some useful comments here and there, and will
>>    continue to do so now and again.)
>> 3. Trivial. Splits up some long lines.
>> 4. Converts SRFs in PL/Perl to use a Tuplestore and SFRM_Materialize
>>    to return the result set, based on the PL/PgSQL model.
>>    There are two major consequences: result sets will spill to disk
>>    when they can no longer fit in work_mem; and "select foo_srf()" no
>>    longer works. (I didn't lose sleep over the latter, since that form
>>    is not valid in PL/PgSQL, and it's not documented in PL/Perl.)
>> 5. Trivial, but important. Fixes use of "undef" instead of undef. This
>>    would cause empty functions to fail in bizarre ways. I suspect that
>>    there's still another (old) bug here. I'll investigate further.
>> 6. Moves the majority of (4) out into a new plperl_return_next()
>>    function, to make it possible to expose the functionality to
>>    Perl; cleans up some of the code besides.
>> 7. Add an spi_return_next function for use in Perl code.
>> If you want to apply the patches and try them out, 8-composite.diff is
>> what you should use. (Note: my patches depend upon Andrew's use-strict
>> and %_SHARED patches being applied.)
>> Here's something to try:
>>     create or replace function foo() returns setof record as $$
>>     $i = 0;
>>     for ("World", "PostgreSQL", "PL/Perl") {
>>         spi_return_next({f1=>++$i, f2=>'Hello', f3=>$_});
>>     }
>>     return;
>>     $$ language plperl;
>>     select * from foo() as (f1 integer, f2 text, f3 text);

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to