sql function can not excute on QE slice 解决方案
方法 1:强制函数在 Master 执行(慎用)
如果函数必须在 Master 节点执行(如依赖全局状态),声明为 EXECUTE ON MASTER
,但会牺牲并行性能:
CREATE OR REPLACE FUNCTION your_function(...)
RETURNS ...
AS $$
-- 函数逻辑
$$ LANGUAGE plpgsql
EXECUTE ON MASTER; -- 仅在 Master 执行方法
场景 2:分布式策略复制
-
错误逻辑:函数使用仅在 Master 安装的扩展(如
postgres_fdw
)。 -
修复方案:在所有 Segment 节点安装该扩展:
-
-- 在 Master 和每个 Segment 执行
CREATE EXTENSION IF NOT EXISTS postgres_fdw;