]> granicus.if.org Git - postgresql/commit
Compare Xmin to previous Xmax when locking an update chain
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Wed, 27 Nov 2013 20:49:12 +0000 (17:49 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 28 Nov 2013 14:54:25 +0000 (11:54 -0300)
commit2a4b6eed0916a8fdc57b4778ecb1463fe752d369
treeb8a6bafe6edb4d60ad41d27b10323fab1e52feea
parent4ed0640e5c356e0935c3a057de7361fc444c0056
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.
src/backend/access/heap/heapam.c