Postgresql не может загрузить модуль Perl - PullRequest
2 голосов
/ 25 августа 2010

У меня возникают проблемы при создании функции postgresql в plperl

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

Когда я хочу создать функцию выше iam, получаю

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 ниже /usr/lib/perl5 и perl внутримой postgres показывает этот каталог в 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:.

Есть идеи почему?

1 Ответ

4 голосов
/ 25 августа 2010

Я думаю, что plperl использует более безопасное подмножество возможностей Perl.

Таким образом, некоторые языковые встроенные функции ограничены.use или require является одним из них, в противном случае допускается выполнение произвольного кода.

Если вас это не волнует, не стесняйтесь использовать PL/Perlu, что является неограниченным Perl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...