From b5e921ef42763dbb1126d60313b25ae40f8ec140 Mon Sep 17 00:00:00 2001
From: Andy Fan <zhihuifan1213@163.com>
Date: Tue, 1 Jul 2025 23:50:37 +0000
Subject: [PATCH v1 1/1] Fix the Assert failure when initdb with
 track_commit_timestamp=on

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

