diff options
Diffstat (limited to 'src/backend/commands/cluster.c')
-rw-r--r-- | src/backend/commands/cluster.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c index c04886c4090..78f96789b0e 100644 --- a/src/backend/commands/cluster.c +++ b/src/backend/commands/cluster.c @@ -919,18 +919,24 @@ copy_table_data(Oid OIDNewHeap, Oid OIDOldHeap, Oid OIDOldIndex, bool verbose, * FreezeXid will become the table's new relfrozenxid, and that mustn't go * backwards, so take the max. */ - if (TransactionIdIsValid(OldHeap->rd_rel->relfrozenxid) && - TransactionIdPrecedes(cutoffs.FreezeLimit, - OldHeap->rd_rel->relfrozenxid)) - cutoffs.FreezeLimit = OldHeap->rd_rel->relfrozenxid; + { + TransactionId relfrozenxid = OldHeap->rd_rel->relfrozenxid; + + if (TransactionIdIsValid(relfrozenxid) && + TransactionIdPrecedes(cutoffs.FreezeLimit, relfrozenxid)) + cutoffs.FreezeLimit = relfrozenxid; + } /* * MultiXactCutoff, similarly, shouldn't go backwards either. */ - if (MultiXactIdIsValid(OldHeap->rd_rel->relminmxid) && - MultiXactIdPrecedes(cutoffs.MultiXactCutoff, - OldHeap->rd_rel->relminmxid)) - cutoffs.MultiXactCutoff = OldHeap->rd_rel->relminmxid; + { + MultiXactId relminmxid = OldHeap->rd_rel->relminmxid; + + if (MultiXactIdIsValid(relminmxid) && + MultiXactIdPrecedes(cutoffs.MultiXactCutoff, relminmxid)) + cutoffs.MultiXactCutoff = relminmxid; + } /* * Decide whether to use an indexscan or seqscan-and-optional-sort to scan |