gpt4 book ai didi

python - 一次查询打开多少个plpython执行环境?

转载 作者:搜寻专家 更新时间:2023-10-30 22:15:28 24 4
gpt4 key购买 nike

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;

对于一个表,创建表文件(名称 varchar,路径 varchar) 并对该表进行如下查询:

SELECT f.name
FROM files f
WHERE character_length( file2text(f.path) ) > 4096
ORDER BY f.name

我的 plpython 函数的每次执行都会生成一个新的 python 环境吗?在 MPP 数据库中,我可以假设 postgres 的行为在每个段上都是重复的,而段之间没有共享状态吗?

最佳答案

PL/Python 状态在 session 之间是隔离的,并在 session 内共享。

您可以通过在 sys 模块中放置一个变量(仅用于测试!)或更好地在您导入的自定义模块中放置一个变量来非常轻松地进行测试。您应该看到该变量对同一 session (连接)中运行的其他函数可见,但对其他 session 中的函数不可见。

关于python - 一次查询打开多少个plpython执行环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13693215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com