2010-08-25 6 views
2

problème ayant Iam fonction de création postgresql dans plperlpostgresql ne peut pas charger le module Perl

CREATE OR REPLACE FUNCTION zm_json (TEXT, TEXT) RETURNS TEXT AS $$ 
    use JSON::XS; 
    # do something 
    return $json_out; 
$$ LANGUAGE plperl; 

Quand je veux créer la fonction ci-dessus iam obtenir

ERROR: creation of Perl function "zm_json" failed: Unable to load JSON/XS.pm into plperl at line 2. 
BEGIN failed--compilation aborted at line 2. 

JSON :: XS est sous /usr/lib/perl5 et perl à l'intérieur de mes postgres montre ce répertoire dans libs

CREATE OR REPLACE FUNCTION zm_perl_directories() RETURNS TEXT AS $$ 
    return join(':', @INC); 
$$ LANGUAGE plperl; 

select zm_perl_directories(); 
-[ RECORD 1 ]-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
zm_perl_directories | /etc/perl:/usr/local/lib/perl/5.10.1:/usr/local/share/perl/5.10.1:/usr/lib/perl5:/usr/share/perl5:/usr/lib/perl/5.10:/usr/share/perl/5.10:/usr/local/lib/site_perl:. 

Toutes les idées pourquoi?

+1

Dupes http://stackoverflow.com/questions/3527843/can-you-use-libraries-in-pl-perl – daxim

Répondre

4

Je pense que plperl utilise un sous-ensemble plus sûr de capacités Perl. En conséquence, certains builtins de langue sont restreints. use ou require est l'un d'entre eux, sinon il permettrait l'exécution de code arbitraire.

Si cela ne vous intéresse pas, n'hésitez pas à utiliser PL/Perlu, qui est le Perl sans restriction.

Questions connexes