Thread

  1. [PATCH v1 1/1] Fix the Assert failure when initdb with track_commit_timestamp=on

    Andy Fan <zhihuifan1213@163.com> — 2025-07-01T23:50:37Z

    the real commit message depends on which solution is adopted.
    ---
     src/backend/access/transam/commit_ts.c | 9 +++++++--
     1 file changed, 7 insertions(+), 2 deletions(-)
    
    diff --git a/src/backend/access/transam/commit_ts.c b/src/backend/access/transam/commit_ts.c
    index 113fae1437a..da8bfb7167c 100644
    --- a/src/backend/access/transam/commit_ts.c
    +++ b/src/backend/access/transam/commit_ts.c
    @@ -157,6 +157,13 @@ TransactionTreeSetCommitTsData(TransactionId xid, int nsubxids,
     	if (!commitTsShared->commitTsActive)
     		return;
     
    +	/*
    +	 * There is no point to record a commit_ts for BootStrapCommitTs or
    +	 * FrozenTransactionId.
    +	 */
    +	if (unlikely(xid == BootstrapTransactionId || xid == FrozenTransactionId))
    +		return;
    +
     	/*
     	 * Figure out the latest Xid in this batch: either the last subxid if
     	 * there's any, otherwise the parent xid.
    @@ -252,8 +259,6 @@ TransactionIdSetCommitTs(TransactionId xid, TimestampTz ts,
     	int			entryno = TransactionIdToCTsEntry(xid);
     	CommitTimestampEntry entry;
     
    -	Assert(TransactionIdIsNormal(xid));
    -
     	entry.time = ts;
     	entry.nodeid = nodeid;
     
    -- 
    2.45.1
    
    
    --=-=-=--