PostgreSQL:plv8.start_proc

时间:2014-01-12 09:33:21

标签: postgresql plv8

在config

中设置启动过程
plv8.start_proc = 'plv8_startup'

创建功能:

CREATE OR REPLACE FUNCTION plv8_startup ()
RETURNS void AS
$body$

  this.hello = function(name){
     return name + ', hello!';
  };

$body$
LANGUAGE 'plv8'
VOLATILE
CALLED ON NULL INPUT
SECURITY DEFINER
COST 100;

在postgres用户下,一切运作良好:

DO $$ 
  plv8.elog(NOTICE, hello('John'));
$$ LANGUAGE plv8;

结果 - 约翰,你好! 然后创建用户测试并尝试运行该函数:

ERROR: ReferenceError: hello is not defined
SQL-state: XX000

试图在执行plv8_startup时授予用户测试 - 结果是一样的。 怎么了?

1 个答案:

答案 0 :(得分:1)

这是我的错误 - 函数不是在公共模式中创建的,因此系统无法在测试用户权限下启动它/