From: Fujii Masao Date: Thu, 25 Mar 2021 02:23:30 +0000 (+0900) Subject: Fix bug in WAL replay of COMMIT_TS_SETTS record. X-Git-Tag: REL_10_17~39 X-Git-Url: http://git.postgresql.org/gitweb/?a=commitdiff_plain;h=d544671f1572a0f9138f0e4b3aff38bb683483b2;p=postgresql.git Fix bug in WAL replay of COMMIT_TS_SETTS record. Previously the WAL replay of COMMIT_TS_SETTS record called TransactionTreeSetCommitTsData() with the argument write_xlog=true, which generated and wrote new COMMIT_TS_SETTS record. This should not be acceptable because it's during recovery. This commit fixes the WAL replay of COMMIT_TS_SETTS record so that it calls TransactionTreeSetCommitTsData() with write_xlog=false and doesn't generate new WAL during recovery. Back-patch to all supported branches. Reported-by: lx zou Author: Fujii Masao Reviewed-by: Alvaro Herrera Discussion: https://postgr.es/m/16931-620d0f2fdc6108f1@postgresql.org --- diff --git a/src/backend/access/transam/commit_ts.c b/src/backend/access/transam/commit_ts.c index 05feb3afc42..526537aafb9 100644 --- a/src/backend/access/transam/commit_ts.c +++ b/src/backend/access/transam/commit_ts.c @@ -1024,7 +1024,7 @@ commit_ts_redo(XLogReaderState *record) subxids = NULL; TransactionTreeSetCommitTsData(setts->mainxid, nsubxids, subxids, - setts->timestamp, setts->nodeid, true); + setts->timestamp, setts->nodeid, false); if (subxids) pfree(subxids); }