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+5jjo...@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(-)