On Oct 12, 2011, at 2:16 AM, Amit Khandekar wrote:

> CREATE OR REPLACE FUNCTION myfuncs() RETURNS void AS $$
>    $_SHARED{myquote} = sub {
>        my $arg = shift;
>        $arg =~ s/(['\\])/\\$1/g;
>        return "'$arg'";
>    };
> $$ LANGUAGE plperl;
> 
> SELECT myfuncs(); /* initializes the function */
> 
> ERROR:  PL/Perl function must return reference to hash or array
> CONTEXT:  PL/Perl function "myfuncs"
> 
> Not sure if this is now an expected behaviour. Is it? Accordingly, I
> can open this in pgsql-bugs or put this issue in pgsql-docs.

Seems like there should be a bar return at the end of the function, otherwise 
it returns the last expression, which happens to be a code reference. Not very 
useful in a function that should return VOID. New version:

CREATE OR REPLACE FUNCTION myfuncs() RETURNS void AS $$
   $_SHARED{myquote} = sub {
       my $arg = shift;
       $arg =~ s/(['\\])/\\$1/g;
       return "'$arg'";
   };
   return;
$$ LANGUAGE plperl;

Best,

David
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to