Remove unnecessary break in pg_logical_replication_slot_advance()
authorMichael Paquier <[email protected]>
Mon, 23 Oct 2023 01:20:30 +0000 (10:20 +0900)
committerMichael Paquier <[email protected]>
Mon, 23 Oct 2023 01:20:30 +0000 (10:20 +0900)
pg_logical_replication_slot_advance() included a break condition to stop
when a targeted LSN is reached, when processing a series of WAL records
with XLogReadRecord().  Since 38a957316d7e, it matched with the check of
its main while loop.  This condition saved from an extra CFI check,
actually pointless, so let's remove this condition and simplify the
code.

In passing, fix an incorrect comment.

Author: Bharath Rupireddy
Reviewed-by: Tom Lane, Gurjeet Singh
Discussion: https://postgr.es/m/CALj2ACWfGDLQ2cy7ZKwxnJqbDkO6Yvqqrqxne5ZN4HYm=PRTGg@mail.gmail.com

src/backend/replication/slotfuncs.c

index 6035cf481600a230a3d66e1aacabaea17ce8afe8..4b694a03d0923ad9b59f8fbc81190a8cc32a4fe4 100644 (file)
@@ -500,7 +500,7 @@ pg_logical_replication_slot_advance(XLogRecPtr moveto)
                /* invalidate non-timetravel entries */
                InvalidateSystemCaches();
 
-               /* Decode at least one record, until we run out of records */
+               /* Decode records until we reach the requested target */
                while (ctx->reader->EndRecPtr < moveto)
                {
                        char       *errm = NULL;
@@ -523,10 +523,6 @@ pg_logical_replication_slot_advance(XLogRecPtr moveto)
                        if (record)
                                LogicalDecodingProcessRecord(ctx, ctx->reader);
 
-                       /* Stop once the requested target has been reached */
-                       if (moveto <= ctx->reader->EndRecPtr)
-                               break;
-
                        CHECK_FOR_INTERRUPTS();
                }