Robert Haas <robertmh...@gmail.com> wrote: > I'm wondering if this shouldn't be linked to whether the scan is > using an MVCC snapshot, rather than inserting exceptions for > specific operations. Yeah, that was raised before somewhere and I spaced it. Grabbing predicate locks for non-MVCC snapshots is nonsense, and the fix is a one-line addition to the SkipSerialization macro defined and used in predicate.c. Patch attached. I agree with your other post that changes which are in the nature of improving performance (which for SSI includes changes which reduce the number of false positive serialization failures for serializable transactions) should be viewed very cautiously in terms of 9.1 inclusion. We're already at a point where a DBT-2 benchmark only shows a 2% hit for SSI overhead, including transaction restarts for serialization failures. I'd love to get that down to 1% or lower, but I don't want to create any risk of introducing bugs in 9.1 at this point. I think this one-liner might be worth considering, since it is very low risk and fixes an undesirable behavior which some (Tom, at least, it would appear) would have no trouble categorizing as a bug. The attached patch has not yet been tested, but I'll test it today along with the latest committed code. -Kevin
*** a/src/backend/storage/lmgr/predicate.c --- b/src/backend/storage/lmgr/predicate.c *************** *** 274,279 **** --- 274,280 ---- #define SkipSerialization(relation) \ ((!IsolationIsSerializable()) \ || ((MySerializableXact == InvalidSerializableXact)) \ + || (!IsMVCCSnapshot(GetActiveSnapshot())) \ || ReleasePredicateLocksIfROSafe() \ || SkipPredicateLocksForRelation(relation))
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers