On Wed, Jun 08, 2011 at 05:48:26PM -0500, Kevin Grittner wrote: > (1) Pass snapshot in to some predicate.c functions. The particular > functions have yet to be determined, but certainly any which acquire > predicate locks, and probably all which are guarded by the > SkipSerialization() macro. Skip processing for non-MVCC snapshots. > The goal here is to reduce false positive serialization failures and > avoid confusion about locks showing in the pg_locks view which are > hard to explain.
I assume you've already started on this one; let me know if you have a patch I should take a look at or hit any snags. > (2) Check on heap truncation from vacuum. On the face of it this > seems unlikely to be a problem since we make every effort to clean > up predicate locks as soon as there is no transaction which can > update what a transaction has read, but it merits a re-check. Once > confirmed, add a note to lazy_truncate_heap about why it's not an > issue. I assume you are worried here that there may be SIREAD locks remaining on truncated pages/tuples, and these would cause false positives if those pages are reused? I don't believe this can happen, because a vacuum will only delete a formerly-visible dead tuple if its xmax is earlier than OldestXmin. We remove all SIREAD locks on anything older than GlobalSxactXmin, which won't be less than OldestXmin. > (4) Add a comment to the docs about how querying tuples by TID > doesn't lock not-found "gaps" the way an indexed access would. I can take care of this one and some other README-SSI changes. Dan -- Dan R. K. Ports MIT CSAIL http://drkp.net/ -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers