在配置中设置启动过程
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 时授予用户测试 - 结果是相同的。怎么了?