Thread: SPI_ERROR_CONNECT in plperl function
Hi list, I have found the following problem: I have declared a domain datatype with a check constraint. The check constraint uses a plpgsql function: CREATE FUNCTION domain_ok(value integer) RETURNS boolean AS $$ BEGIN RETURN value > 0; END; $$ LANGUAGE plpgsql; CREATE DOMAIN testdomain integer CHECK (domain_ok(value)); I then wrote a plperl function that returns a set of this domain type: CREATE FUNCTION testfunc() RETURNS SETOF testdomain AS $$ return_next(42); return undef; $$ LANGUAGE plperl; When I try to call the function I get the following error message: test=# select * from testfunc(); ERROR: error from Perl function: SPI_connect failed: SPI_ERROR_CONNECT at line 2. The problem goes away if I declare the testfunc to return an integer. Even a domain with a "normal" check constraint (i.e. without one that calls another function) does not cause this error. Is this a known bug? Or do I miss something? Regards, Christian -- Deriva GmbH Tel.: +49 551 489500-42 Financial IT and Consulting Fax: +49 551 489500-91 Hans-Böckler-Straße 2 http://www.deriva.de D-37079 Göttingen Deriva CA Certificate: http://www.deriva.de/deriva-ca.cer
=?ISO-8859-1?Q?Christian_Schr=F6der?= <cs@deriva.de> writes: > When I try to call the function I get the following error message: > test=# select * from testfunc(); > ERROR: error from Perl function: SPI_connect failed: SPI_ERROR_CONNECT > at line 2. Hmph ... looks like plperl is shy a few SPI_push/SPI_pop calls. We fixed this issue in plpgsql awhile back, but nobody thought to look at the other PLs :-( regards, tom lane
I wrote: > =?ISO-8859-1?Q?Christian_Schr=F6der?= <cs@deriva.de> writes: >> When I try to call the function I get the following error message: >> test=# select * from testfunc(); >> ERROR: error from Perl function: SPI_connect failed: SPI_ERROR_CONNECT >> at line 2. > Hmph ... looks like plperl is shy a few SPI_push/SPI_pop calls. I've applied a patch for this --- it'll be in the next set of update releases. regards, tom lane
Tom Lane wrote: > Hmph ... looks like plperl is shy a few SPI_push/SPI_pop calls. > > > I've applied a patch for this --- it'll be in the next set of update > releases. > Great. Thanks a lot! The whole PostgreSQL stuff is really amazing! :-) Regards, Christian -- Deriva GmbH Tel.: +49 551 489500-42 Financial IT and Consulting Fax: +49 551 489500-91 Hans-Böckler-Straße 2 http://www.deriva.de D-37079 Göttingen Deriva CA Certificate: http://www.deriva.de/deriva-ca.cer