3

在配置中设置启动过程

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 时授予用户测试 - 结果是相同的。怎么了?

4

1 回答 1

1

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

于 2014-01-13T12:43:04.633 回答