From ea5b5e04a655fb0865cc90b0b26c9e3f8e53ac81 Mon Sep 17 00:00:00 2001 From: Rushabh Lathia Date: Tue, 12 Dec 2017 14:41:24 +0530 Subject: [PATCH 2/4] Obtain a RowExclusiveLock on the index relation within _bt_worker_main(), because that's all the leader has at that point within CREATE INDEX CONCURRENTLY. --- src/backend/access/nbtree/nbtsort.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/backend/access/nbtree/nbtsort.c b/src/backend/access/nbtree/nbtsort.c index 9ce7530..52265ac 100644 --- a/src/backend/access/nbtree/nbtsort.c +++ b/src/backend/access/nbtree/nbtsort.c @@ -1513,9 +1513,7 @@ _bt_worker_main(dsm_segment *seg, shm_toc *toc) heapLockmode = ShareLock; else heapLockmode = ShareUpdateExclusiveLock; - - /* REINDEX and CREATE INDEX [CONCURRENTLY] use an AccessExclusiveLock */ - indexLockmode = AccessExclusiveLock; + indexLockmode = btshared->isconcurrent ? RowExclusiveLock : AccessExclusiveLock; /* Open relations here, for worker */ heapRel = heap_open(btshared->heaprelid, heapLockmode); -- 1.8.3.1