Draft patch for comment fix.
From 304453f67b26219dc94e6aef9dfdc1c1debf12bb Mon Sep 17 00:00:00 2001
From: Craig Ringer <[email protected]>
Date: Wed, 6 Apr 2016 14:57:26 +0800
Subject: [PATCH] Fix incorrect comments introduced in logical decoding
timeline following
---
src/backend/replication/logical/logicalfuncs.c | 14 +++++++-------
src/include/replication/slot.h | 18 ++++++++++++++++--
2 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/src/backend/replication/logical/logicalfuncs.c b/src/backend/replication/logical/logicalfuncs.c
index 5af6751..5f74941 100644
--- a/src/backend/replication/logical/logicalfuncs.c
+++ b/src/backend/replication/logical/logicalfuncs.c
@@ -236,8 +236,10 @@ pg_logical_slot_get_changes_guts(FunctionCallInfo fcinfo, bool confirm, bool bin
PG_TRY();
{
/*
- * Passing InvalidXLogRecPtr here causes decoding to start returning
- * commited xacts to the client at the slot's confirmed_flush.
+ * Passing InvalidXLogRecPtr here causes logical decoding to
+ * start calling the output plugin for transactions that commit
+ * at or after the slot's confirmed_flush. This filters commits
+ * out from the client but they're still decoded.
*/
ctx = CreateDecodingContext(InvalidXLogRecPtr,
options,
@@ -262,11 +264,9 @@ pg_logical_slot_get_changes_guts(FunctionCallInfo fcinfo, bool confirm, bool bin
ctx->output_writer_private = p;
/*
- * We start reading xlog from the restart lsn, even though we won't
- * start returning decoded data to the user until the point set up in
- * CreateDecodingContext. The restart_lsn is far enough back that we'll
- * see the beginning of any xact we're expected to return to the client
- * so we can assemble a complete reorder buffer for it.
+ * Reading and decoding of WAL must start at restart_lsn so that the
+ * entirety of each of the xacts that commit after confimed_lsn can be
+ * accumulated into reorder buffers.
*/
startptr = MyReplicationSlot->data.restart_lsn;
diff --git a/src/include/replication/slot.h b/src/include/replication/slot.h
index efcce5f..50c8a33 100644
--- a/src/include/replication/slot.h
+++ b/src/include/replication/slot.h
@@ -63,10 +63,24 @@ typedef struct ReplicationSlotPersistentData
*/
TransactionId catalog_xmin;
- /* oldest LSN that might be required by this replication slot */
+ /*
+ * oldest LSN that might be required by this replication slot.
+ *
+ * Points to the LSN of the most recent xl_running_xacts record where
+ * no transaction that commits after confirmed_flush is already in
+ * progress. At this point all xacts committing after confirmed_flush
+ * can be read entirely into reorder buffers and all visibility
+ * information can be reconstructed.
+ */
XLogRecPtr restart_lsn;
- /* oldest LSN that the client has acked receipt for */
+ /*
+ * oldest LSN that the client has acked receipt for
+ *
+ * Decoding will start calling output plugin callbacks for commits
+ * after this LSN unless a different start point is specified by
+ * the client.
+ */
XLogRecPtr confirmed_flush;
/* plugin name */
--
2.1.0
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers