"YAMAMOTO Takashi" <yamt(at)mwd(dot)biglobe(dot)ne(dot)jp> wrote:
> heap_fetch calls CheckForSerializableConflictOut without buffer
> locked. it ends up an assertion failure in
> SetBufferCommitInfoNeedsSave.
>
>
> diff --git a/src/backend/access/heap/heapam.c
> b/src/backend/access/heap/heapam.c
> index 7dcc601..89697f6 100644
> --- a/src/backend/access/heap/heapam.c
> +++ b/src/backend/access/heap/heapam.c
> @@ -1472,10 +1472,10 @@ heap_fetch(Relation relation,
> if (valid)
> PredicateLockTuple(relation, tuple);
>
> - LockBuffer(buffer, BUFFER_LOCK_UNLOCK);
> -
> CheckForSerializableConflictOut(valid, relation, tuple,
buffer);
>
> + LockBuffer(buffer, BUFFER_LOCK_UNLOCK);
> +
> if (valid)
> {
> /*
Thanks so much for all your SSI testing! And thanks for your
excellent diagnosis when you hit a problem! If you can think of any
portable tests we could add, please share.
-Kevin