postgres (和greenplum)中的用户定义函数是否独立运行?当我有一个带有plpythonu用户定义函数的查询时,有多少执行环境是开放的?运行查询时有没有共享的python解释器状态?
假设我有一个plpython用户定义函数:
CREATE OR REPLACE FUNCTION file2text(path string) RETURNS text AS $$
f = open(path, 'r')
return f.read()
f.close()
$$ LANGUAGE plpythonu;对于表create table files (name varchar, path varchar)和对该表的查询,如下所示:
SELECT f.name
FROM files f
WHERE character_length( file2text(f.path) ) > 4096
ORDER BY f.name每次执行plpython函数都会产生一个新的python环境吗?在MPP数据库中,我是否可以假设postgres的行为可以跨每个网段复制,而不是跨网段共享状态?
发布于 2012-12-04 07:56:50
PL/Python状态在会话之间隔离,并在会话中共享。
通过在sys模块中放置一个变量(仅用于测试),可以非常容易地对其进行测试。或者更好,在您导入的自定义模块中。您应该看到该变量对同一会话(连接)中运行的其他函数可见,但对其他会话中的函数不可见。
https://stackoverflow.com/questions/13693215
复制相似问题