From 3bfa6ec401d14054ede1d9c3c0351a5a045049cf Mon Sep 17 00:00:00 2001 From: Takashi Menjo Date: Thu, 20 Jan 2022 12:01:56 +0900 Subject: [PATCH v8 09/11] Fix wrong handling of missingContrecPtr For test/recovery/t/026 to pass. This may melt into "Preallocate and initialize more WAL if wal_pmem_map=true". --- src/backend/access/transam/xlog.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 15379481fa..f19a451f63 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -8245,7 +8245,15 @@ StartupXLOG(void) * Preallocate additional log files, if wanted. */ if (wal_pmem_map) + { + /* + * AdvanceXLInsertBuffer may reset missingContrecPtr, so we + * save and restore it for CreateOverwriteContrecordRecord. + */ + XLogRecPtr savedMissingContrecPtr = missingContrecPtr; AdvanceXLInsertBuffer(InvalidXLogRecPtr, newTLI, true); + missingContrecPtr = savedMissingContrecPtr; + } else PreallocXlogFiles(EndOfLog, newTLI); -- 2.25.1