projects
/
users
/
simon
/
postgres.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
27998dd
)
Prevent CLUSTER from decreasing a relation's relfrozenxid. Bug
author
Tom Lane
<tgl@sss.pgh.pa.us>
Tue, 15 Jan 2008 21:20:28 +0000
(21:20 +0000)
committer
Tom Lane
<tgl@sss.pgh.pa.us>
Tue, 15 Jan 2008 21:20:28 +0000
(21:20 +0000)
introduced in rewrite to make CLUSTER MVCC-safe.
src/backend/commands/cluster.c
patch
|
blob
|
blame
|
history
diff --git
a/src/backend/commands/cluster.c
b/src/backend/commands/cluster.c
index 9c4ff8e5cacbdebcb616fa3543815dbbc0554418..ecefb216af4203e5c6a666e54f23d0af8b831b9b 100644
(file)
--- 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);