Commit 438fc4a3 authored by Fujii Masao's avatar Fujii Masao

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: default avatarlx zou <zoulx1982@163.com>
Author: Fujii Masao
Reviewed-by: Alvaro Herrera
Discussion: https://postgr.es/m/16931-620d0f2fdc6108f1@postgresql.org
parent df938449
...@@ -1074,7 +1074,7 @@ commit_ts_redo(XLogReaderState *record) ...@@ -1074,7 +1074,7 @@ commit_ts_redo(XLogReaderState *record)
subxids = NULL; subxids = NULL;
TransactionTreeSetCommitTsData(setts->mainxid, nsubxids, subxids, TransactionTreeSetCommitTsData(setts->mainxid, nsubxids, subxids,
setts->timestamp, setts->nodeid, true); setts->timestamp, setts->nodeid, false);
if (subxids) if (subxids)
pfree(subxids); pfree(subxids);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment