Workaround to get arrays for plperl

Started by Eugen Konkovabout 18 years ago3 messagesbugs
Jump to latest
#1Eugen Konkov
Eugen.Konkov@aldec.com

It seems that function get arrays as strings in plperl.
This is a little workaround who want pass arrays to plperl functions

my( $strarr )= @_;
$strarr =~ s/{/[/g;
$strarr =~ s/}/]/g;
my $arr= eval $strarr;

NOTICE:
you must create you function as plperlu
and add language:
create language plperlu;

#2CaT
cat@zip.com.au
In reply to: Eugen Konkov (#1)
Re: Workaround to get arrays for plperl

On Sun, Mar 30, 2008 at 04:23:07PM +0300, Eugen.Konkov@aldec.com wrote:

It seems that function get arrays as strings in plperl.
This is a little workaround who want pass arrays to plperl functions

my( $strarr )= @_;
$strarr =~ s/{/[/g;
$strarr =~ s/}/]/g;
my $arr= eval $strarr;

NOTICE:
you must create you function as plperlu
and add language:
create language plperlu;

It's late and I'm sleepy, but, that looks extremely hazardous to ones
health. Esp if the arrays you speak of have any chance of containing
anything that might look like perl code to begin with. ie think sql
injection, but with perl code rather then sql.

cat

#3Eugen Konkov
Eugen.Konkov@aldec.com
In reply to: Eugen Konkov (#1)
Re: Workaround to get arrays for plperl

Yes, It is dangerous. But there is no other way to get arrays for plperl
The doc says that all passed to plperl function are strings ((

Another strange is that that '{1,2,3,4}' looks as hash in perl
It will be more conviniet if arrays passed as '[1,2,3,4]' strings if PG can
not pass them as arrays

----- Original Message -----
From: "CaT" <cat@zip.com.au>
To: <Eugen.Konkov@aldec.com>
Cc: <pgsql-bugs@postgresql.org>
Sent: Sunday, March 30, 2008 4:27 PM
Subject: Re: [BUGS] Workaround to get arrays for plperl

Show quoted text

On Sun, Mar 30, 2008 at 04:23:07PM +0300, Eugen.Konkov@aldec.com wrote:

It seems that function get arrays as strings in plperl.
This is a little workaround who want pass arrays to plperl functions

my( $strarr )= @_;
$strarr =~ s/{/[/g;
$strarr =~ s/}/]/g;
my $arr= eval $strarr;

NOTICE:
you must create you function as plperlu
and add language:
create language plperlu;

It's late and I'm sleepy, but, that looks extremely hazardous to ones
health. Esp if the arrays you speak of have any chance of containing
anything that might look like perl code to begin with. ie think sql
injection, but with perl code rather then sql.

cat