在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时授予用户测试 - 结果是一样的。 怎么了?
答案 0 :(得分:1)
这是我的错误 - 函数不是在公共模式中创建的,因此系统无法在测试用户权限下启动它/