diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index febb38db15..33d6964126 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -6229,10 +6229,9 @@ heap_inplace_lock(Relation relation, LockTupleMode lockmode = LockTupleNoKeyExclusive; MultiXactStatus mxact_status = MultiXactStatusNoKeyUpdate; int remain; - bool current_is_member; if (DoesMultiXactIdConflict((MultiXactId) xwait, infomask, - lockmode, ¤t_is_member)) + lockmode, NULL)) { LockBuffer(buffer, BUFFER_LOCK_UNLOCK); ret = false; diff --git a/src/test/isolation/expected/intra-grant-inplace.out b/src/test/isolation/expected/intra-grant-inplace.out index b5fe8b06f7..4e9695a021 100644 --- a/src/test/isolation/expected/intra-grant-inplace.out +++ b/src/test/isolation/expected/intra-grant-inplace.out @@ -63,6 +63,30 @@ step addk2: ALTER TABLE intra_grant_inplace ADD PRIMARY KEY (c); step r3: ROLLBACK; step addk2: <... completed> +starting permutation: b3 sfnku3 keyshr5 addk2 r3 +step b3: BEGIN ISOLATION LEVEL READ COMMITTED; +step sfnku3: + SELECT relhasindex FROM pg_class + WHERE oid = 'intra_grant_inplace'::regclass FOR NO KEY UPDATE; + +relhasindex +----------- +f +(1 row) + +step keyshr5: + SELECT relhasindex FROM pg_class + WHERE oid = 'intra_grant_inplace'::regclass FOR KEY SHARE; + +relhasindex +----------- +f +(1 row) + +step addk2: ALTER TABLE intra_grant_inplace ADD PRIMARY KEY (c); +step r3: ROLLBACK; +step addk2: <... completed> + starting permutation: b2 sfnku2 addk2 c2 step b2: BEGIN; step sfnku2: diff --git a/src/test/isolation/specs/intra-grant-inplace.spec b/src/test/isolation/specs/intra-grant-inplace.spec index 2992c85b44..9936d38935 100644 --- a/src/test/isolation/specs/intra-grant-inplace.spec +++ b/src/test/isolation/specs/intra-grant-inplace.spec @@ -96,6 +96,14 @@ permutation addk2(r3) r3 +# reproduce bug in DoesMultiXactIdConflict() call +permutation + b3 + sfnku3 + keyshr5 + addk2(r3) + r3 + # same-xact rowmark permutation b2