Re: Recursive calls to functions that return sets

From: Thomas Hallgren <thomas(at)tada(dot)se>
To: Andrew Dunstan <andrew(at)dunslane(dot)net>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Martijn van Oosterhout <kleptog(at)svana(dot)org>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Recursive calls to functions that return sets
Date: 2006-03-22 17:27:19
Message-ID: 442188F7.8080503@tada.se
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Recursive calls works in PL/Java. No problem there. But the larger the
set, the more memory it consumes. Do I read your answers correctly if I
conclude this is a known limitation when SPI is used? I.e. there's no
way to stream one row at a time without ever building the full set?

Regards,
Thomas Hallgren

Andrew Dunstan wrote:
> Tom Lane wrote:
>
>>
>> plpgsql and similar languages will return a tuplestore anyway, so it has
>> to handle that case, and it was convenient to make all the cases look
>> alike for starters. Nobody's yet gone back to improve it for the case
>> of languages that return a tuple per call.
>>
>>
>>
>
>
>
> This would be hard to do in the plperl case, at least, and I would be
> surprised if it weren't in most others too. So what plperl does is to
> fetch the whole set on the first call and then fudges all the other
> calls to get the next element from the result set. We save out the
> intermediate tuple store on each call and restore it afterwards, so I
> think recursion shouldn't be a difficulty.
>
> cheers
>
> andrew

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Alvaro Herrera 2006-03-22 17:34:55 Re: Recursive calls to functions that return sets
Previous Message Adrian Maier 2006-03-22 17:22:50 Re: How to put back??