Jacky Leng wrote:
Tuples with an aborted xmin can be vacuumed right away. When we're
following the update chain in EvalPlanQual, it's possible that the updater
has aborted, the updated dead tuple is vacuumed away, and the slot is
reused for another unrelated tuple.
But if the updater aborted, how can EvalPlanQual be called?
In this situation (updater aborted), EvalPlanQual's caller (such as
ExecUpdate and ExecDelete)
should get "HeapTupleMayBeUpdated", rather than "HeapTupleUpdated".
Well, consider this update chain:
A -> B -> C
If A is the tuple visible to the snapshot of the updating query, and the
updater of (A->B) has committed, heap_update/delete call in
ExecUpdate/Delete will return HeapTupleUpdate.
Now that think about this more, I don't see either how that check in
EvalPlanQual could ever be true.
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers