Hello,

Since commit cdf91edb (2012), nodeIndexonlyscan.c says:

                /*
                 * Predicate locks for index-only scans must be
acquired at the page
                 * level when the heap is not accessed, since
tuple-level predicate
                 * locks need the tuple's xmin value.  If we had to
visit the tuple
                 * anyway, then we already have the tuple-level lock
and can skip the
                 * page lock.
                 */
                if (tuple == NULL)
                        PredicateLockPage(scandesc->heapRelation,

ItemPointerGetBlockNumber(tid),
                                                          estate->es_snapshot);

The first sentence of that comment is no longer true as of commit
c01262a8 (2013).  As for whether it's necessary to predicate-lock the
whole eheap page (rather than the heap tuple) anyway because of HOT
update chains, I don't know, so I'm not sure what wording to propose
instead.

-- 
Thomas Munro
http://www.enterprisedb.com

Reply via email to