From: Tom Lane Date: Tue, 15 Jan 2008 21:20:28 +0000 (+0000) Subject: Prevent CLUSTER from decreasing a relation's relfrozenxid. Bug X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=de56b9ec34e9efe8b44ec7fc5e88a413187d2b24;p=users%2Fbernd%2Fpostgres.git Prevent CLUSTER from decreasing a relation's relfrozenxid. Bug introduced in rewrite to make CLUSTER MVCC-safe. --- diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c index 9c4ff8e5ca..ecefb216af 100644 --- a/src/backend/commands/cluster.c +++ b/src/backend/commands/cluster.c @@ -751,6 +751,13 @@ copy_heap_data(Oid OIDNewHeap, Oid OIDOldHeap, Oid OIDOldIndex) vacuum_set_xid_limits(-1, OldHeap->rd_rel->relisshared, &OldestXmin, &FreezeXid); + /* + * FreezeXid will become the table's new relfrozenxid, and that mustn't + * go backwards, so take the max. + */ + if (TransactionIdPrecedes(FreezeXid, OldHeap->rd_rel->relfrozenxid)) + FreezeXid = OldHeap->rd_rel->relfrozenxid; + /* Initialize the rewrite operation */ rwstate = begin_heap_rewrite(NewHeap, OldestXmin, FreezeXid, use_wal);