我正在尝试使用pgologic-9.6进行2节点双向复制。当我设置pgologic.conflict_resolution ='last_update_wins'时,我能够始终引起段错误。
我正在创建一个DELETE DELETE TRIGGER,以防止将某些值插入复制表中。
CREATE TRIGGER TR_REP BEFORE DELETE
ON table_for_repl
FOR EACH ROW
EXECUTE PROCEDURE check_value();
CREATE OR REPLACE FUNCTION public.check_value()
RETURNS trigger AS
$BODY$
BEGIN
IF OLD."origin"::text = 'test' then
RETURN OLD;
ELSE
RETURN Null;
END IF;
END;
$BODY$
LANGUAGE plpgsq;
此触发器可以正常执行删除操作。 当我打开它进行复制时(ALTER TABLE table_for_repl ENABLE REPLICA TRIGGER TR_REP;),我重现了触发器应阻止插入的情况(即该函数将返回Null)。 我得到:
background worker "pglogical apply 16384:1892658794" (PID 4250) was terminated by signal 11: Segmentation fault.
terminating any other active server processes
recovered replication state of node 1 to 0/1764C38
database system was not properly shut down; automatic recovery in progress
在pgologic-11上重复出现错误
答案 0 :(得分:0)
分段错误始终是一个错误,除非它是由硬件问题或数据损坏引起的。
您应该向2ndQuadrant提交错误;这是他们的软件。
确保在错误报告中包含复制器。