From 6dfa79e9fba4e1d7d4ce8c9b88fc69e3d18944eb Mon Sep 17 00:00:00 2001
From: Melanie Plageman <melanieplageman@gmail.com>
Date: Fri, 13 Dec 2024 13:48:09 -0500
Subject: [PATCH v3 5/7] Refactor vacuum assert into multiple if statements

The assert in heap_vacuum_rel() before updating relfrozenxid and/or
relminmxid in pg_class was long and complicated. This commit refactors
it into several if statements for clarity.
---
 src/backend/access/heap/vacuumlazy.c | 45 +++++++++++++++++++++++-----
 1 file changed, 37 insertions(+), 8 deletions(-)

diff --git a/src/backend/access/heap/vacuumlazy.c b/src/backend/access/heap/vacuumlazy.c
index e568396f0f5..59637284d02 100644
--- a/src/backend/access/heap/vacuumlazy.c
+++ b/src/backend/access/heap/vacuumlazy.c
@@ -550,14 +550,43 @@ heap_vacuum_rel(Relation rel, VacuumParams *params,
 	 * value >= FreezeLimit, and relminmxid to a value >= MultiXactCutoff.
 	 * Non-aggressive VACUUMs may advance them by any amount, or not at all.
 	 */
-	Assert(vacrel->NewRelfrozenXid == vacrel->cutoffs.OldestXmin ||
-		   TransactionIdPrecedesOrEquals(vacrel->aggressive ? vacrel->cutoffs.FreezeLimit :
-										 vacrel->cutoffs.relfrozenxid,
-										 vacrel->NewRelfrozenXid));
-	Assert(vacrel->NewRelminMxid == vacrel->cutoffs.OldestMxact ||
-		   MultiXactIdPrecedesOrEquals(vacrel->aggressive ? vacrel->cutoffs.MultiXactCutoff :
-									   vacrel->cutoffs.relminmxid,
-									   vacrel->NewRelminMxid));
+
+#ifdef USE_ASSERT_CHECKING
+	if (vacrel->NewRelfrozenXid == vacrel->cutoffs.OldestXmin)
+	{
+		/* No new relfrozenxid identified */
+	}
+	else if (vacrel->aggressive)
+	{
+		/*
+		 * Aggressive vacuum must have frozen all tuples older than the freeze
+		 * limit.
+		 */
+		Assert(TransactionIdPrecedesOrEquals(vacrel->cutoffs.FreezeLimit,
+											 vacrel->NewRelfrozenXid));
+	}
+	else
+		Assert(TransactionIdPrecedesOrEquals(vacrel->cutoffs.relfrozenxid,
+											 vacrel->NewRelfrozenXid));
+
+	if (vacrel->NewRelminMxid == vacrel->cutoffs.OldestMxact)
+	{
+		/* No new relminmxid identified */
+	}
+	else if (vacrel->aggressive)
+	{
+		/*
+		 * Aggressive vacuum must have frozen all tuples older than the
+		 * multixact cutoff.
+		 */
+		Assert(MultiXactIdPrecedesOrEquals(vacrel->cutoffs.MultiXactCutoff,
+										   vacrel->NewRelminMxid));
+	}
+	else
+		Assert(MultiXactIdPrecedesOrEquals(vacrel->cutoffs.relminmxid,
+										   vacrel->NewRelminMxid));
+#endif
+
 	if (vacrel->skippedallvis)
 	{
 		/*
-- 
2.34.1

