PostgreSQL 8.0.0rc1
DBD::PgSPI 0.02
Perl 5.8.6
FreeBSD 4.10-STABLE, Solaris 9
More error handling problems with plperl -- this time when using
DBD::PgSPI. If a function executes a query that raises an error,
subsequent functions that haven't been loaded yet will fail. I
think this problem got fixed for code that uses spi_exec_query().
CREATE OR REPLACE FUNCTION test1() RETURNS TEXT AS $$
use DBD::PgSPI;
my @v = $pg_dbh->selectrow_array("SELECT syntax_error");
return $v[0];
$$ LANGUAGE plperlu;
CREATE OR REPLACE FUNCTION test2() RETURNS TEXT AS $$
use DBD::PgSPI;
my @v = $pg_dbh->selectrow_array("SELECT 'this works'");
return $v[0];
$$ LANGUAGE plperlu;
SELECT test1();
ERROR: column "syntax_error" does not exist
CONTEXT: SQL statement "SELECT syntax_error"
SELECT test2();
ERROR: creation of Perl function failed: (in cleanup) Undefined subroutine &DBD::_::db::mkunsafefunc called at
/usr/local/lib/perl5/site_perl/5.8.6/i386-freebsd/DBI.pmline 1529.
LOAD 'plperl'; -- or reconnect
SELECT test2();
test2
------------
this works
(1 row)
--
Michael Fuhr
http://www.fuhr.org/~mfuhr/