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 的行为在每个段之间重复,而段之间没有共享状态吗?