Predicate locking in hash indexes.
Hash index searches acquire predicate locks on the primary
page of a bucket. It acquires a lock on both the old and new buckets
for scans that happen concurrently with page splits. During a bucket
split, a predicate lock is copied from the primary page of an old
bucket to the primary page of a new bucket.
Author: Shubham Barai, Amit Kapila
Reviewed by: Amit Kapila, Alexander Korotkov, Thomas Munro
Discussion:
https://www.postgresql.org/message-id/flat/CALxAEPvNsM2GTiXdRgaaZ1Pjd1bs+sxfFsf7Ytr+iq+5JJoYXA@mail.gmail.com
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/b508a56f2f3a2d850e75a14661943d6b4dde8274
Modified Files
--------------
src/backend/access/hash/hash.c | 2 +-
src/backend/access/hash/hashinsert.c | 3 +
src/backend/access/hash/hashpage.c | 6 +
src/backend/access/hash/hashsearch.c | 3 +
src/backend/storage/lmgr/README-SSI | 7 +
src/test/isolation/expected/predicate-hash.out | 659 +++++++++++++++++++++++++
src/test/isolation/isolation_schedule | 1 +
src/test/isolation/specs/predicate-hash.spec | 122 +++++
8 files changed, 802 insertions(+), 1 deletion(-)