Thread

  1. plperl and the dynamic loader

    Ragnar Hakonarson <rhakonarson@conquestnetwork.com> — 2000-05-21T14:58:18Z

    Hi,
    
    I have now desperately tried to use the 'use' keyword within my plperl
    scripts without success.
    
    Does plperl not load libraries dynamically?
    
    I am trying to import a .pm module from plperl and I get the following error
    message:
    	creation of function failed : require trapped by operation mask at (eval
    28) line 2.
    
    What I want to be able to do is to access my own defined perl libraries from
    plperl.
    
    I have looked at the plperl.c file and I noticed that the dynamic loader is
    not initialised.
    
    I would be most grateful for any help. Also, is there any documentation
    online for plperl?
    
    Regards,
    Ragnar
    
    
    
    
  2. Re: plperl and the dynamic loader

    Tom Lane <tgl@sss.pgh.pa.us> — 2000-05-21T17:34:30Z

    "Ragnar Hakonarson" <rhakonarson@conquestnetwork.com> writes:
    > Does plperl not load libraries dynamically?
    
    > I am trying to import a .pm module from plperl and I get the following error
    > message:
    > 	creation of function failed : require trapped by operation mask at (eval 28) line 2.
    
    Makes sense to me.  plperl runs in a "safe" Perl interpreter, and if you
    could load arbitrary perl code then the safety would be bypassed.
    
    The reason for this restriction is that whatever the Perl code does will
    be done with the permissions of the Postgres user (since it's running in
    a Postgres-owned backend).  It'd be a huge security hole if users could
    invoke arbitrary Perl code in that environment.  So, we only permit
    "safe" operations.
    
    If you like living dangerously you could weaken the protection to suit
    your taste --- read about the Safe and Opcode perl modules, and then
    twiddle the plperl source code to select whatever operator mask you
    feel comfortable with.
    
    			regards, tom lane