Обсуждение: Use of perl modules in plperl ?
I am trying to examine the values of $_TD->{new}. I thought the easiest way to see what this structure looked like was to use the Dumper functionality. To do so I need to include the appropriate Perl module, which I would think would be done like this: use Data::Dumper qw(Dumper); But inserting that into the script to create the function, like this: CREATE OR REPLACE FUNCTION valid_id() RETURNS trigger AS $$ use Data::Dumper qw(Dumper); if (($_TD->{new}{i} >= 100) || ($_TD->{new}{i} <= 0)) { ...... Returned this error message: ERROR: Unable to load Data/Dumper.pm into plperl at line 2. BEGIN failed--compilation aborted at line 2. CONTEXT: compilation of PL/Perl function "valid_id" What do I have to do to use Perl modules in plperl function/ BTW this works outside plperl #!/usr/bin/perl use strict; use warnings; use Data::Dumper qw(Dumper); .................. Thanks for the help. -- "They that would give up essential liberty for temporary safety deserve neither liberty nor safety." -- Benjamin Franklin
On Wed, Mar 04, 2020 at 06:03:22AM -0500, stan wrote: > I am trying to examine the values of $_TD->{new}. I thought the easiest way > to see what this structure looked like was to use the Dumper functionality. > To do so I need to include the appropriate Perl module, which I would think > would be done like this: > > use Data::Dumper qw(Dumper); > > But inserting that into the script to create the function, like this: > > CREATE OR REPLACE FUNCTION valid_id() RETURNS trigger AS $$ > use Data::Dumper qw(Dumper); > if (($_TD->{new}{i} >= 100) || ($_TD->{new}{i} <= 0)) { > ...... > > Returned this error message: > > ERROR: Unable to load Data/Dumper.pm into plperl at line 2. > BEGIN failed--compilation aborted at line 2. > CONTEXT: compilation of PL/Perl function "valid_id" > > What do I have to do to use Perl modules in plperl function/ > > BTW this works outside plperl > > #!/usr/bin/perl > use strict; > use warnings; > use Data::Dumper qw(Dumper); > > .................. > > Thanks for the help. > Found plperlu in the docs. But some syntax help on referencing all the values returned by $_TD->{new} would be helpful. -- "They that would give up essential liberty for temporary safety deserve neither liberty nor safety." -- Benjamin Franklin
On Wed, Mar 04, 2020 at 06:03:22AM -0500, stan wrote: > I am trying to examine the values of $_TD->{new}. I thought the easiest way > to see what this structure looked like was to use the Dumper functionality. > To do so I need to include the appropriate Perl module, which I would think > would be done like this: > use Data::Dumper qw(Dumper); plperl is trusted, and you can't use "use" in it. More on this: https://www.postgresql.org/docs/current/plperl-trusted.html You have two options: 1. Switch to pl/PerlU 2. set plperl.on_init to whatever "use" you need, examples: https://www.postgresql.org/docs/current/plperl-under-the-hood.html#PLPERL-CONFIG Best regards, depesz