Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 0abd9cd

Browse files
author
Amit Kapila
committed
Update parallel BTree scan state when the scan keys can't be satisfied.
For parallel btree scan to work for array of scan keys, it should reach BTPARALLEL_DONE state once for every distinct combination of array keys. This is required to ensure that the parallel workers don't try to seize blocks at the same time for different scan keys. We missed to update this state when we discovered that the scan keys can't be satisfied. Author: James Hunter Reviewed-by: Amit Kapila Tested-by: Justin Pryzby Backpatch-through: 10, where it was introduced Discussion: https://postgr.es/m/4248CABC-25E3-4809-B4D0-128E1BAABC3C@amazon.com
1 parent bfb12cd commit 0abd9cd

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

src/backend/access/nbtree/nbtsearch.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -884,7 +884,11 @@ _bt_first(IndexScanDesc scan, ScanDirection dir)
884884
* never be satisfied (eg, x == 1 AND x > 2).
885885
*/
886886
if (!so->qual_ok)
887+
{
888+
/* Notify any other workers that we're done with this scan key. */
889+
_bt_parallel_done(scan);
887890
return false;
891+
}
888892

889893
/*
890894
* For parallel scans, get the starting page from shared state. If the

0 commit comments

Comments
 (0)