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_14_BETA1~462 X-Git-Url: http://git.postgresql.org/gitweb/?a=commitdiff_plain;h=438fc4a39c3905b7af88bb848bc5aeb1308a017d;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 48e8d662860..268bdba3398 100644 --- a/src/backend/access/transam/commit_ts.c +++ b/src/backend/access/transam/commit_ts.c @@ -1074,7 +1074,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); }