index-only scans versus serializable transactions - Mailing list pgsql-hackers

From Kevin Grittner
Subject index-only scans versus serializable transactions
Date
Msg-id 5044DB5D0200002500049DC4@gw.wicourts.gov
Whole thread Raw
Responses Re: index-only scans versus serializable transactions  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
By not visiting the heap page for tuples, index-only scans fail to
acquire all of the necessary predicate locks for correct behavior at
the serializable transaction isolation level.  The tag for the
tuple-level predicate locks includes the xmin, to avoid possible
problems with tid re-use.  (This was not covered in initial
pre-release versions of SSI, and testing actually hit the problem.)
When an "index-only" scan does need to look at the heap because the
visibility map doesn't indicate that the tuple is visible to all
transactions, the tuple-level predicate lock is acquired.  The best
we can do without visiting the heap is a page level lock on the heap
page, so that is what the attached patch does.

If there are no objections, I will apply to HEAD and 9.2.

-Kevin

Attachment

pgsql-hackers by date:

Previous
From: "Kevin Grittner"
Date:
Subject: Re: Multiple setup steps for isolation tests
Next
From: Heikki Linnakangas
Date:
Subject: Re: Cascading replication and recovery_target_timeline='latest'