HEAD-v5-0002-pgoutput-don-t-send-leaf-partition-schema-when-pu.patch
application/octet-stream
Filename: HEAD-v5-0002-pgoutput-don-t-send-leaf-partition-schema-when-pu.patch
Type: application/octet-stream
Part: 2
Patch
Format: format-patch
Series: patch v5-0002
Subject: pgoutput: don't send leaf partition schema when publishing via ancestor
| File | + | − |
|---|---|---|
| src/backend/replication/pgoutput/pgoutput.c | 6 | 6 |
From 08c3f7979011fae982c3c32691c56ab3d4886c08 Mon Sep 17 00:00:00 2001
From: amitlan <amitlangote09@gmail.com>
Date: Thu, 20 May 2021 21:35:09 +0900
Subject: [PATCH v5 2/2] pgoutput: don't send leaf partition schema when
publishing via ancestor
---
src/backend/replication/pgoutput/pgoutput.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/backend/replication/pgoutput/pgoutput.c b/src/backend/replication/pgoutput/pgoutput.c
index de89b14308..0b1ec102cb 100644
--- a/src/backend/replication/pgoutput/pgoutput.c
+++ b/src/backend/replication/pgoutput/pgoutput.c
@@ -74,7 +74,8 @@ static void send_relation_and_attrs(Relation relation, TransactionId xid,
/*
* Entry in the map used to remember which relation schemas we sent.
*
- * The schema_sent flag determines if the current schema record was already
+ * The schema_sent flag determines if the current schema record for the
+ * relation (or for its ancestor if publish_as_relid is set) was already
* sent to the subscriber (in which case we don't need to send it again).
*
* The schema cache on downstream is however updated only at commit time,
@@ -440,9 +441,8 @@ maybe_send_schema(LogicalDecodingContext *ctx,
/*
* Nope, so send the schema. If the changes will be published using an
* ancestor's schema, not the relation's own, send that ancestor's schema
- * before sending relation's own (XXX - maybe sending only the former
- * suffices?). This is also a good place to set the map that will be used
- * to convert the relation's tuples into the ancestor's format, if needed.
+ * instead. This is also a good place to set the map that will be used to
+ * convert the relation's tuples into the ancestor's format, if needed.
*/
if (relentry->publish_as_relid != RelationGetRelid(relation))
{
@@ -473,8 +473,8 @@ maybe_send_schema(LogicalDecodingContext *ctx,
MemoryContextSwitchTo(oldctx);
RelationClose(ancestor);
}
-
- send_relation_and_attrs(relation, xid, ctx);
+ else
+ send_relation_and_attrs(relation, xid, ctx);
if (in_streaming)
set_schema_sent_in_streamed_txn(relentry, topxid);
--
2.24.1