perlchunks.h
text/x-chdr
/*
* DO NOT EDIT - THIS FILE IS AUTOGENERATED - CHANGES WILL BE LOST
* Written by ./text2macro.pl from plc_perlboot.pl plc_trusted.pl
*/
#define PLC_PERLBOOT \
"use strict;\n" \
"use 5.008001;\n" \
"use vars qw(%_SHARED $_TD);\n" \
"PostgreSQL::InServer::Util::bootstrap();\n" \
"sub ::is_array_ref\n" \
"{\n" \
" return ref($_[0]) =~ m/^(?:PostgreSQL::InServer::)?ARRAY$/;\n" \
"}\n" \
"sub ::encode_array_literal\n" \
"{\n" \
" my ($arg, $delim) = @_;\n" \
" return $arg unless (::is_array_ref($arg));\n" \
" $delim = ', ' unless defined $delim;\n" \
" my $res = '';\n" \
" foreach my $elem (@$arg)\n" \
" {\n" \
" $res .= $delim if length $res;\n" \
" if (ref $elem)\n" \
" {\n" \
" $res .= ::encode_array_literal($elem, $delim);\n" \
" }\n" \
" elsif (defined $elem)\n" \
" {\n" \
" (my $str = $elem) =~ s/([\"\\\\])/\\\\$1/g;\n" \
" $res .= qq(\"$str\");\n" \
" }\n" \
" else\n" \
" {\n" \
" $res .= 'NULL';\n" \
" }\n" \
" }\n" \
" return qq({$res});\n" \
"}\n" \
"sub ::encode_array_constructor\n" \
"{\n" \
" my $arg = shift;\n" \
" return ::quote_nullable($arg) unless ::is_array_ref($arg);\n" \
" my $res = join \", \",\n" \
" map { (ref $_) ? ::encode_array_constructor($_) : ::quote_nullable($_) }\n" \
" @$arg;\n" \
" return \"ARRAY[$res]\";\n" \
"}\n" \
"{\n" \
" package PostgreSQL::InServer\n" \
" ; ## no critic (RequireFilenameMatchesPackage);\n" \
" use strict;\n" \
" use warnings;\n" \
" sub plperl_warn\n" \
" {\n" \
" (my $msg = shift) =~ s/\\(eval \\d+\\) //g;\n" \
" chomp $msg;\n" \
" &::elog(&::WARNING, $msg);\n" \
" }\n" \
" $SIG{__WARN__} = \\&plperl_warn;\n" \
" sub plperl_die\n" \
" {\n" \
" (my $msg = shift) =~ s/\\(eval \\d+\\) //g;\n" \
" die $msg;\n" \
" }\n" \
" $SIG{__DIE__} = \\&plperl_die;\n" \
" sub mkfuncsrc\n" \
" {\n" \
" my ($name, $imports, $prolog, $src) = @_;\n" \
" my $BEGIN = join \"\\n\", map {\n" \
" my $names = $imports->{$_} || [];\n" \
" \"$_->import(qw(@$names));\"\n" \
" } sort keys %$imports;\n" \
" $BEGIN &&= \"BEGIN { $BEGIN }\";\n" \
" return qq[ package main; sub { $BEGIN $prolog $src } ];\n" \
" }\n" \
" sub mkfunc\n" \
" {\n" \
" ## no critic (ProhibitNoStrict, ProhibitStringyEval);\n" \
" no strict; # default to no strict for the eval\n" \
" no warnings; # default to no warnings for the eval\n" \
" my $ret = eval(mkfuncsrc(@_));\n" \
" $@ =~ s/\\(eval \\d+\\) //g if $@;\n" \
" return $ret;\n" \
" ## use critic\n" \
" }\n" \
" 1;\n" \
"}\n" \
"{\n" \
" package PostgreSQL::InServer::ARRAY;\n" \
" use strict;\n" \
" use warnings;\n" \
" use overload\n" \
" '\"\"' => \\&to_str,\n" \
" '@{}' => \\&to_arr;\n" \
" sub to_str\n" \
" {\n" \
" my $self = shift;\n" \
" return ::encode_typed_literal($self->{'array'}, $self->{'typeoid'});\n" \
" }\n" \
" sub to_arr\n" \
" {\n" \
" return shift->{'array'};\n" \
" }\n" \
" 1;\n" \
"}\n" \
""
#define PLC_TRUSTED \
"package PostgreSQL::InServer::safe\n" \
" ; ## no critic (RequireFilenameMatchesPackage);\n" \
"require strict;\n" \
"require Carp;\n" \
"require Carp::Heavy;\n" \
"require warnings;\n" \
"require feature if $] >= 5.010000;\n" \
""
/* end */