From 7e174fa793a2df89fe03d002a5087ef67abcdde8 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Fri, 4 Aug 2017 21:14:35 -0400 Subject: Only kill sync workers at commit time in subscription DDL This allows a transaction abort to avoid killing those workers. Author: Petr Jelinek --- src/backend/access/transam/xact.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/backend/access/transam/xact.c') diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index b0aa69fe4b4..50c3c3b5e5e 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -2277,6 +2277,15 @@ PrepareTransaction(void) (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("cannot PREPARE a transaction that has exported snapshots"))); + /* + * Don't allow PREPARE but for transaction that has/might kill logical + * replication workers. + */ + if (XactManipulatesLogicalReplicationWorkers()) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot PREPARE a transaction that has manipulated logical replication workers"))); + /* Prevent cancel/die interrupt while cleaning up */ HOLD_INTERRUPTS(); -- cgit v1.2.3