56375e55创建于 2024年8月20日历史提交
drop schema if exists test_parallel_index_scan cascade;
create schema test_parallel_index_scan;
set current_schema='test_parallel_index_scan';
-- create test table and index
DROP TABLE IF EXISTS parallel_index_01;
CREATE TABLE parallel_index_01(a int, b int);
INSERT INTO parallel_index_01 VALUES (generate_series(1, 1000000), generate_series(1,1000000));
CREATE INDEX index_parallel_index_01 ON parallel_index_01(a);
SET enable_seqscan = OFF;
SET enable_bitmapscan = OFF;
SET enable_indexonlyscan = OFF;
SET query_dop = 1002;

-- parallel index scan in equality case
SELECT * FROM parallel_index_01 WHERE a=100;
SELECT * FROM parallel_index_01 WHERE a=100 AND a=10000;
SELECT * FROM parallel_index_01 WHERE a=100 AND b=100;
SELECT * FROM parallel_index_01 WHERE a=100 AND b=200;

-- parallel index scan in scope case
EXPLAIN (COSTS OFF) SELECT * FROM parallel_index_01 WHERE a<10000;
SELECT COUNT(b) FROM parallel_index_01 WHERE a<10000;
EXPLAIN (COSTS OFF) SELECT * FROM parallel_index_01 WHERE a>10000 AND a<20000;
SELECT COUNT(b) FROM parallel_index_01 WHERE a>10000 AND a<20000;
EXPLAIN (COSTS OFF) SELECT * FROM parallel_index_01 WHERE a in (1000,10000,100000) ORDER BY a;
SELECT * FROM parallel_index_01 WHERE a in (1000,10000,100000) ORDER BY a;
EXPLAIN (COSTS OFF) SELECT * FROM parallel_index_01 WHERE a<10000 ORDER BY a LIMIT 10;

--cleanup env
reset enable_seqscan;
reset enable_bitmapscan;
reset enable_indexonlyscan;
reset query_dop;