On Tue, Feb 23, 2010 at 15:23, Tim Bunce <tim.bu...@pobox.com> wrote:
> I believe (but haven't yet confirmed) that the problem here is recursion. > This affects all versions of PostgreSQL. Hrm... This seems to work for me in HEAD. It certainly breaks in 8.3. Am I missing something? ---- $ bin/psql postgres psql (9.0devel) Type "help" for help. postgres=# CREATE OR REPLACE FUNCTION foo( integer) RETURNS SETOF INT LANGUAGE plperl AS $$ $$; CREATE FUNCTION postgres=# \q $ bin/psql postgres psql (9.0devel) Type "help" for help. postgres=# CREATE OR REPLACE FUNCTION try() RETURNS VOID LANGUAGE plperl AS $$ my $sth = spi_query("SELECT id FROM foo( 0 ) AS g(id)"); while( my $row = spi_fetchrow($sth) ) { } $$; CREATE FUNCTION postgres=# SELECT try(); try ----- (1 row) Seems like assuming I did the above correctly we just have a bug in the older branches where the "SELECT id FROM foo(0)..." part is getting compiled/executed in the wrong perl context. In-fact I would not be surprised at all if there are other dragons lurking when plperl calls something that tries to compile/call a plperl function. Safe >2.20 or older. Ill keep digging. -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs