On 08.06.2011 18:09, Kevin Grittner wrote:
> Robert Haas<robertmhaas@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.
I also think this should be fixed.
> The attached patch has not yet been tested, but I'll test it today
> along with the latest committed code.
You can't use GetActiveSnapshot() for this. You can have one snapshot
pushed to the active snapshot stack, and do a DDL operation like reindex
using a different snapshot. You'll have to check the snapshot in the
HeapScanDesc.
-- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com