aboutsummaryrefslogtreecommitdiff
path: root/src/pl/plperl/plc_perlboot.pl
diff options
context:
space:
mode:
Diffstat (limited to 'src/pl/plperl/plc_perlboot.pl')
-rw-r--r--src/pl/plperl/plc_perlboot.pl130
1 files changed, 72 insertions, 58 deletions
diff --git a/src/pl/plperl/plc_perlboot.pl b/src/pl/plperl/plc_perlboot.pl
index e3e507722a8..d506d01163b 100644
--- a/src/pl/plperl/plc_perlboot.pl
+++ b/src/pl/plperl/plc_perlboot.pl
@@ -7,99 +7,113 @@ PostgreSQL::InServer::Util::bootstrap();
# globals
-sub ::is_array_ref {
+sub ::is_array_ref
+{
return ref($_[0]) =~ m/^(?:PostgreSQL::InServer::)?ARRAY$/;
}
-sub ::encode_array_literal {
+sub ::encode_array_literal
+{
my ($arg, $delim) = @_;
- return $arg unless(::is_array_ref($arg));
+ return $arg unless (::is_array_ref($arg));
$delim = ', ' unless defined $delim;
my $res = '';
- foreach my $elem (@$arg) {
+ foreach my $elem (@$arg)
+ {
$res .= $delim if length $res;
- if (ref $elem) {
+ if (ref $elem)
+ {
$res .= ::encode_array_literal($elem, $delim);
}
- elsif (defined $elem) {
+ elsif (defined $elem)
+ {
(my $str = $elem) =~ s/(["\\])/\\$1/g;
$res .= qq("$str");
}
- else {
+ else
+ {
$res .= 'NULL';
}
}
return qq({$res});
}
-sub ::encode_array_constructor {
+sub ::encode_array_constructor
+{
my $arg = shift;
return ::quote_nullable($arg) unless ::is_array_ref($arg);
- my $res = join ", ", map {
- (ref $_) ? ::encode_array_constructor($_)
- : ::quote_nullable($_)
- } @$arg;
+ my $res = join ", ",
+ map { (ref $_) ? ::encode_array_constructor($_) : ::quote_nullable($_) }
+ @$arg;
return "ARRAY[$res]";
}
{
-package PostgreSQL::InServer;
-use strict;
-use warnings;
-
-sub plperl_warn {
- (my $msg = shift) =~ s/\(eval \d+\) //g;
- chomp $msg;
- &::elog(&::WARNING, $msg);
-}
-$SIG{__WARN__} = \&plperl_warn;
-sub plperl_die {
- (my $msg = shift) =~ s/\(eval \d+\) //g;
- die $msg;
-}
-$SIG{__DIE__} = \&plperl_die;
+ package PostgreSQL::InServer;
+ use strict;
+ use warnings;
-sub mkfuncsrc {
- my ($name, $imports, $prolog, $src) = @_;
+ sub plperl_warn
+ {
+ (my $msg = shift) =~ s/\(eval \d+\) //g;
+ chomp $msg;
+ &::elog(&::WARNING, $msg);
+ }
+ $SIG{__WARN__} = \&plperl_warn;
- my $BEGIN = join "\n", map {
- my $names = $imports->{$_} || [];
- "$_->import(qw(@$names));"
- } sort keys %$imports;
- $BEGIN &&= "BEGIN { $BEGIN }";
+ sub plperl_die
+ {
+ (my $msg = shift) =~ s/\(eval \d+\) //g;
+ die $msg;
+ }
+ $SIG{__DIE__} = \&plperl_die;
- return qq[ package main; sub { $BEGIN $prolog $src } ];
-}
+ sub mkfuncsrc
+ {
+ my ($name, $imports, $prolog, $src) = @_;
-sub mkfunc {
- no strict; # default to no strict for the eval
- no warnings; # default to no warnings for the eval
- my $ret = eval(mkfuncsrc(@_));
- $@ =~ s/\(eval \d+\) //g if $@;
- return $ret;
-}
+ my $BEGIN = join "\n", map {
+ my $names = $imports->{$_} || [];
+ "$_->import(qw(@$names));"
+ } sort keys %$imports;
+ $BEGIN &&= "BEGIN { $BEGIN }";
-1;
+ return qq[ package main; sub { $BEGIN $prolog $src } ];
+ }
+
+ sub mkfunc
+ {
+ no strict; # default to no strict for the eval
+ no warnings; # default to no warnings for the eval
+ my $ret = eval(mkfuncsrc(@_));
+ $@ =~ s/\(eval \d+\) //g if $@;
+ return $ret;
+ }
+
+ 1;
}
{
-package PostgreSQL::InServer::ARRAY;
-use strict;
-use warnings;
-use overload
- '""'=>\&to_str,
- '@{}'=>\&to_arr;
+ package PostgreSQL::InServer::ARRAY;
+ use strict;
+ use warnings;
-sub to_str {
- my $self = shift;
- return ::encode_typed_literal($self->{'array'}, $self->{'typeoid'});
-}
+ use overload
+ '""' => \&to_str,
+ '@{}' => \&to_arr;
-sub to_arr {
- return shift->{'array'};
-}
+ sub to_str
+ {
+ my $self = shift;
+ return ::encode_typed_literal($self->{'array'}, $self->{'typeoid'});
+ }
+
+ sub to_arr
+ {
+ return shift->{'array'};
+ }
-1;
+ 1;
}