Fix pg_rewind debug output to print the source timeline history
authorHeikki Linnakangas <[email protected]>
Thu, 8 Aug 2024 07:20:25 +0000 (10:20 +0300)
committerHeikki Linnakangas <[email protected]>
Thu, 8 Aug 2024 07:22:04 +0000 (10:22 +0300)
getTimelineHistory() is called twice, to read the source and the
target timeline history files. However, the loop to print the file
with the --debug option used the wrong variable when dealing with the
source. As a result, the source's history was always printed as empty.

Spotted while debugging bug #18575, but this does not fix that bug,
just the debugging output. Backpatch to all supported versions.

Discussion: https://www.postgresql.org/message-id/092dd515-b7b4-4fd0-8407-ceca2f02f6ec@iki.fi

src/bin/pg_rewind/pg_rewind.c

index 2a18f675c84ba3a91039fd551be92182781bbf38..5b1b3e62ccee144a619e03298591f638315b85e2 100644 (file)
@@ -578,6 +578,7 @@ getTimelineHistory(ControlFileData *controlFile, int *nentries)
        pg_free(histfile);
    }
 
+   /* In debugging mode, print what we read */
    if (debug)
    {
        int         i;
@@ -589,10 +590,7 @@ getTimelineHistory(ControlFileData *controlFile, int *nentries)
        else
            Assert(false);
 
-       /*
-        * Print the target timeline history.
-        */
-       for (i = 0; i < targetNentries; i++)
+       for (i = 0; i < *nentries; i++)
        {
            TimeLineHistoryEntry *entry;