postgresql/src/backend/access
Alvaro Herrera e4828e9ccb Compare Xmin to previous Xmax when locking an update chain
Not doing so causes us to traverse an update chain that has been broken
by concurrent page pruning.  All other code that traverses update chains
uses this check as one of the cases in which to stop iterating, so
replicate it here too.  Failure to do so leads to erroneous CLOG,
subtrans or multixact lookups.

Per discussion following the bug report by J Smith in
CADFUPgc5bmtv-yg9znxV-vcfkb+JPRqs7m2OesQXaM_4Z1JpdQ@mail.gmail.com
as diagnosed by Andres Freund.
2013-11-28 12:00:12 -03:00
..
common Support multi-argument UNNEST(), and TABLE() syntax for multiple functions. 2013-11-21 19:37:20 -05:00
gin Get rid of the post-recovery cleanup step of GIN page splits. 2013-11-27 19:21:23 +02:00
gist Post-pgindent cleanup 2013-06-01 09:38:15 -04:00
hash Consistently use unsigned arithmetic for alignment calculations. 2013-10-20 21:04:52 -04:00
heap Compare Xmin to previous Xmax when locking an update chain 2013-11-28 12:00:12 -03:00
index Use InvalidSnapshot, now SnapshotNow, as the default snapshot. 2013-07-23 10:58:32 -04:00
nbtree Use an MVCC snapshot, rather than SnapshotNow, for catalog scans. 2013-07-02 09:47:01 -04:00
rmgrdesc Get rid of the post-recovery cleanup step of GIN page splits. 2013-11-27 19:21:23 +02:00
spgist Retry after buffer locking failure during SPGiST index creation. 2013-11-02 16:45:42 -04:00
transam Change SET LOCAL/CONSTRAINTS/TRANSACTION and ABORT behavior 2013-11-25 19:19:40 -05:00
Makefile Split out rmgr rm_desc functions into their own files 2012-11-28 13:01:15 -03:00