"Tom Lane" <tgl@sss.pgh.pa.us> writes:
> [ raised eyebrow... ] You sure about that? If you replace an XID
> before OldestXmin with one after, or vice versa, ISTM you *could*
> be creating a problem. "Committed" is not good enough. So it looks
> to me like you can't remove a DEAD tuple whose predecessor is only
> RECENTLY_DEAD.
Except you're replacing it with the xmax of a tuple that while you can't prove
it using OldestXmin you're convinced is in fact really DEAD. So everyone
should be able to see the txn id you're substituting.
It seems safer to remove all the tuples you think are DEAD rather than leave
them and have hidden assumptions that you're right. It would be far easier to
test that you're not removing tuples that aren't dead than that you aren't
breaking the chain or substituting a live xmin in cases where it might matter.
-- Gregory Stark EnterpriseDB http://www.enterprisedb.com