Draft patch for comment fix.
From 304453f67b26219dc94e6aef9dfdc1c1debf12bb Mon Sep 17 00:00:00 2001 From: Craig Ringer <cr...@2ndquadrant.com> 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 (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers