Remove overzealous MultiXact freeze assertion.
authorPeter Geoghegan <pg@bowt.ie>
Tue, 27 Dec 2022 07:36:02 +0000 (23:36 -0800)
committerPeter Geoghegan <pg@bowt.ie>
Tue, 27 Dec 2022 07:36:02 +0000 (23:36 -0800)
When VACUUM determines that an existing MultiXact should use a freeze
plan that sets xmax to InvalidTransactionId, the original Multi may or
may not be before OldestMxact.  Remove an incorrect assertion that
expected it to always be from before OldestMxact.

Oversight in commit 4ce3af.

Author: Peter Geoghegan <pg@bowt.ie>
Reported-By: Hayato Kuroda <kuroda.hayato@fujitsu.com>
Discussion: https://postgr.es/m/TYAPR01MB5866B24104FD80B5D7E65C3EF5ED9@TYAPR01MB5866.jpnprd01.prod.outlook.com

src/backend/access/heap/heapam.c

index 86a88de853fe5c166956ea7d378815d6a5de2f6d..71bd071d2b0a3de42a3e7cff36022514e793bd54 100644 (file)
@@ -6615,7 +6615,6 @@ heap_prepare_freeze_tuple(HeapTupleHeader tuple,
             * it'll leave nothing in xmax (neither an Xid nor a MultiXactId).
             */
            Assert(flags & FRM_INVALIDATE_XMAX);
-           Assert(MultiXactIdPrecedes(xid, cutoffs->OldestMxact));
            Assert(!TransactionIdIsValid(newxmax));
 
            /* Will set t_infomask/t_infomask2 flags in freeze plan below */