diff options
author | Alexander Korotkov <akorotkov@postgresql.org> | 2018-12-27 04:10:51 +0300 |
---|---|---|
committer | Alexander Korotkov <akorotkov@postgresql.org> | 2018-12-27 04:24:20 +0300 |
commit | b450abd2551ee30b5bc289c662f5728d87e13a39 (patch) | |
tree | 6d4f6671df05664ade51c6174d80cb23b6c57964 /src/backend/access/gin/gindatapage.c | |
parent | 1e504f01da11db0181d7b28bb30cb5eeb0767184 (diff) | |
download | postgresql-b450abd2551ee30b5bc289c662f5728d87e13a39.tar.gz postgresql-b450abd2551ee30b5bc289c662f5728d87e13a39.zip |
Remove entry tree root conflict checking from GIN predicate locking
According to README we acquire predicate locks on entry tree leafs and posting
tree roots. However, when ginFindLeafPage() is going to lock leaf in exclusive
mode, then it checks root for conflicts regardless whether it's a entry or
posting tree. Assuming that we never place predicate lock on entry tree root
(excluding corner case when root is leaf), this check is redundant. This
commit removes this check. Now, root conflict checking is controlled by
separate argument of ginFindLeafPage().
Discussion: https://postgr.es/m/CAPpHfdv7rrDyy%3DMgsaK-L9kk0AH7az0B-mdC3w3p0FSb9uoyEg%40mail.gmail.com
Author: Alexander Korotkov
Backpatch-through: 11
Diffstat (limited to 'src/backend/access/gin/gindatapage.c')
-rw-r--r-- | src/backend/access/gin/gindatapage.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/backend/access/gin/gindatapage.c b/src/backend/access/gin/gindatapage.c index 9f20513811e..54d68909125 100644 --- a/src/backend/access/gin/gindatapage.c +++ b/src/backend/access/gin/gindatapage.c @@ -1913,7 +1913,7 @@ ginInsertItemPointers(Relation index, BlockNumber rootBlkno, { /* search for the leaf page where the first item should go to */ btree.itemptr = insertdata.items[insertdata.curitem]; - stack = ginFindLeafPage(&btree, false, NULL); + stack = ginFindLeafPage(&btree, false, true, NULL); ginInsertValue(&btree, stack, &insertdata, buildStats); } @@ -1932,7 +1932,7 @@ ginScanBeginPostingTree(GinBtree btree, Relation index, BlockNumber rootBlkno, btree->fullScan = true; - stack = ginFindLeafPage(btree, true, snapshot); + stack = ginFindLeafPage(btree, true, false, snapshot); return stack; } |