Robert Haas <robertmhaas(at)gmail(dot)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