postgresql无法加载perl模块

时间:2010-08-25 11:13:05

标签: perl postgresql

我在plperl中创建postgresql函数时遇到问题

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下,我的postgres中的perl在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 个答案:

答案 0 :(得分:4)

我认为plperl正在使用更安全的Perl功能子集。

因此,某些语言内置版本受到限制。 userequire是其中之一,否则它允许任意代码执行。

如果您不关心这一点,请随意使用PL/Perlu,这是不受限制的Perl。