mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-30 19:00:29 +08:00
Don't allow relminmxid to go backwards during VACUUM FULL
We were allowing a table's pg_class.relminmxid value to move backwards
when heaps were swapped by VACUUM FULL or CLUSTER. There is a
similar protection against relfrozenxid going backwards, which we
neglected to clone when the multixact stuff was rejiggered by commit
0ac5ad5134
.
Backpatch to 9.3, where relminmxid was introduced.
As reported by Heikki in
http://www.postgresql.org/message-id/52401AEA.9000608@vmware.com
This commit is contained in:
parent
b277057648
commit
b7e51d9c06
@ -861,6 +861,12 @@ copy_heap_data(Oid OIDNewHeap, Oid OIDOldHeap, Oid OIDOldIndex, bool verbose,
|
||||
if (TransactionIdPrecedes(FreezeXid, OldHeap->rd_rel->relfrozenxid))
|
||||
FreezeXid = OldHeap->rd_rel->relfrozenxid;
|
||||
|
||||
/*
|
||||
* MultiXactCutoff, similarly, shouldn't go backwards either.
|
||||
*/
|
||||
if (MultiXactIdPrecedes(MultiXactCutoff, OldHeap->rd_rel->relminmxid))
|
||||
MultiXactCutoff = OldHeap->rd_rel->relminmxid;
|
||||
|
||||
/* return selected values to caller */
|
||||
*pFreezeXid = FreezeXid;
|
||||
*pCutoffMulti = MultiXactCutoff;
|
||||
|
Loading…
Reference in New Issue
Block a user