0005-WIP-workaround-for-issue-in-parallel-apply-20230116.patch

text/x-patch

Filename: 0005-WIP-workaround-for-issue-in-parallel-apply-20230116.patch
Type: text/x-patch
Part: 4
Message: Re: logical decoding and replication of sequences, take 2

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: format-patch
Series: patch 0005
Subject: WIP: workaround for issue in parallel apply
File+
src/backend/replication/logical/worker.c 12 0
From eb4540776b09dd37a322b40326b0a778399d6ed6 Mon Sep 17 00:00:00 2001
From: Tomas Vondra <tomas@2ndquadrant.com>
Date: Sun, 15 Jan 2023 18:51:47 +0100
Subject: [PATCH 5/5] WIP: workaround for issue in parallel apply

---
 src/backend/replication/logical/worker.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/backend/replication/logical/worker.c b/src/backend/replication/logical/worker.c
index fd9acca49e2..6a0204d3e87 100644
--- a/src/backend/replication/logical/worker.c
+++ b/src/backend/replication/logical/worker.c
@@ -1435,9 +1435,21 @@ apply_handle_sequence(StringInfo s)
 	LogicalRepSequence	seq;
 	Oid					relid;
 
+	bool				fake_xact = false;
+
+	if (!in_remote_transaction &&
+		!in_streamed_transaction)
+	{
+		in_remote_transaction = true;
+		fake_xact = true;
+	}
+
 	if (handle_streamed_transaction(LOGICAL_REP_MSG_SEQUENCE, s))
 		return;
 
+	if (fake_xact)
+		in_remote_transaction = false;
+
 	logicalrep_read_sequence(s, &seq);
 
 	/*
-- 
2.39.0