--
-- An SQL error causes subsequent function creation of an otherwise
-- healthy function to fail WHEN RUN with:
--    ERROR:  creation of function failed:
--    (in cleanup) Undefined subroutine &PLPerl::mksafefunc called at (eval 4) line 4.
-- 
-- Workaround is to close and reopen the connection after an SQL failure
-- 
create or replace function plperl_bug1( )
returns text as
'
my $qry = ''select * from pg_user'';
elog NOTICE, ''Good Query is: $qry'';
my $rv = spi_exec_query( $qry );
elog NOTICE, $rv->{status};
elog NOTICE, @{$rv->{rows}};
return $qry;
' language 'plperl';

select plperl_bug1();

create or replace function plperl_bug2( )
returns text as
'
my $qry = ''select * from pg_userssssssssssssssss'';
elog NOTICE, ''Bad Query is: $qry'';
my $rv = spi_exec_query( $qry );
elog NOTICE, $rv->{status};
elog NOTICE, @{$rv->{rows}};
return $qry;
' language 'plperl';
select plperl_bug2();

--
-- same as above definition
--
create or replace function plperl_bug1( )
returns text as
'
my $qry = ''select * from pg_user'';
elog NOTICE, ''Good Query is: $qry'';
my $rv = spi_exec_query( $qry );
elog NOTICE, $rv->{status};
elog NOTICE, @{$rv->{rows}};
return $qry;
' language 'plperl';

select plperl_bug1();


Sun, 4 Jul 2004 18:07:31 -0700
elein <elein@varlena.com>
Bug in PL/Perl CVS head w/spi patch
I am unable to reproduce this effect.

The script below (slightly adapted from yours) runs just fine repeatedly 
in the same session with expected results.

create or replace function plperl_bug1( )
returns text as
$$
  my $qry = 'select * from pg_user';
  elog NOTICE, "Good Query is: $qry";
  my $rv = spi_exec_query( $qry );
  elog NOTICE, "status: $rv->{status} processed: $rv->{processed}";
  return $qry;
$$ language plperl;

select plperl_bug1();

create or replace function plperl_bug2( )
returns text as
$$
  my $qry = "select * from pg_userssssssssssssssss";
  elog NOTICE, "Bad Query is: $qry";
  my $rv = spi_exec_query( $qry );
  elog NOTICE, "status: $rv->{status} processed: $rv->{processed}";
  return $qry;
$$ language plperl;

select plperl_bug2();


cheers

andrew

elein wrote:

>--
>-- An SQL error causes subsequent function creation of an otherwise
>-- healthy function to fail WHEN RUN with:
>--    ERROR:  creation of function failed:
>--    (in cleanup) Undefined subroutine &PLPerl::mksafefunc called at (eval 4) line 4.
>  
>

Mon, 05 Jul 2004 09:52:23 -0400
Andrew Dunstan <andrew@dunslane.net>
Re: Bug in PL/Perl CVS head w/spi patch