On 2018-05-24 13:08:53 -0400, Alvaro Herrera wrote: > Hmm .. surely > > diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c > index 5016181fd7..5d7fa1fb45 100644 > --- a/src/backend/access/heap/heapam.c > +++ b/src/backend/access/heap/heapam.c > @@ -6690,7 +6690,7 @@ heap_prepare_freeze_tuple(HeapTupleHeader tuple, > xid = HeapTupleHeaderGetXmin(tuple); > xmin_frozen = ((xid == FrozenTransactionId) || > HeapTupleHeaderXminFrozen(tuple)); > - if (TransactionIdIsNormal(xid)) > + if (!xmin_frozen && TransactionIdIsNormal(xid)) > { > if (TransactionIdPrecedes(xid, relfrozenxid)) > ereport(ERROR, > > > ?? I don't think that's necesary - HeapTupleHeaderGetXmin() returns FrozenTransactionId if the tuple is frozen (note the HeapTupleHeaderXminFrozen() within). Greetings, Andres Freund