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