]> granicus.if.org Git - postgresql/commitdiff
Increase parallel bitmap scan test coverage.
authorAndres Freund <andres@anarazel.de>
Thu, 6 Apr 2017 20:36:54 +0000 (13:36 -0700)
committerAndres Freund <andres@anarazel.de>
Thu, 6 Apr 2017 20:36:54 +0000 (13:36 -0700)
Author: Dilip Kumar
Discussion: https://postgr.es/m/20170331184603.qcp7t4md5bzxbx32@alap3.anarazel.de

src/test/regress/expected/select_parallel.out
src/test/regress/sql/select_parallel.sql

index 038a62efd76dabd6f94bf4df7e16635ced5121d4..2463f1ff98e4e8829df2f8da41e04d4bd1c7ad47 100644 (file)
@@ -172,22 +172,50 @@ reset enable_bitmapscan;
 -- test parallel bitmap heap scan.
 set enable_seqscan to off;
 set enable_indexscan to off;
+set enable_hashjoin to off;
+set enable_mergejoin to off;
+set enable_material to off;
+set effective_io_concurrency=50;
+set work_mem='64kB';  --set small work mem to force lossy pages
 explain (costs off)
-       select  count((unique1)) from tenk1 where hundred > 1;
+       select count(*) from tenk1, tenk2 where tenk1.hundred > 1 and tenk2.thousand=0;
                          QUERY PLAN                         
 ------------------------------------------------------------
- Finalize Aggregate
-   ->  Gather
-         Workers Planned: 4
-         ->  Partial Aggregate
+ Aggregate
+   ->  Nested Loop
+         ->  Seq Scan on tenk2
+               Filter: (thousand = 0)
+         ->  Gather
+               Workers Planned: 4
                ->  Parallel Bitmap Heap Scan on tenk1
                      Recheck Cond: (hundred > 1)
                      ->  Bitmap Index Scan on tenk1_hundred
                            Index Cond: (hundred > 1)
-(8 rows)
+(10 rows)
+
+select count(*) from tenk1, tenk2 where tenk1.hundred > 1 and tenk2.thousand=0;
+ count 
+-------
+ 98000
+(1 row)
+
+create table bmscantest (a int, t text);
+insert into bmscantest select r, 'fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' FROM generate_series(1,100000) r;
+create index i_bmtest ON bmscantest(a);
+select count(*) from bmscantest where a>1;
+ count 
+-------
+ 99999
+(1 row)
 
 reset enable_seqscan;
 reset enable_indexscan;
+reset enable_hashjoin;
+reset enable_mergejoin;
+reset enable_material;
+reset effective_io_concurrency;
+reset work_mem;
+drop table bmscantest;
 -- test parallel merge join path.
 set enable_hashjoin to off;
 set enable_nestloop to off;
index 9311a775af606b8e9e36fbcd30a0f18e9bc4b81b..53f4271c18252f739fc2c436dedbc4bb7cfbbd69 100644 (file)
@@ -67,12 +67,28 @@ reset enable_bitmapscan;
 -- test parallel bitmap heap scan.
 set enable_seqscan to off;
 set enable_indexscan to off;
-
+set enable_hashjoin to off;
+set enable_mergejoin to off;
+set enable_material to off;
+set effective_io_concurrency=50;
+set work_mem='64kB';  --set small work mem to force lossy pages
 explain (costs off)
-       select  count((unique1)) from tenk1 where hundred > 1;
+       select count(*) from tenk1, tenk2 where tenk1.hundred > 1 and tenk2.thousand=0;
+select count(*) from tenk1, tenk2 where tenk1.hundred > 1 and tenk2.thousand=0;
+
+create table bmscantest (a int, t text);
+insert into bmscantest select r, 'fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' FROM generate_series(1,100000) r;
+create index i_bmtest ON bmscantest(a);
+select count(*) from bmscantest where a>1;
 
 reset enable_seqscan;
 reset enable_indexscan;
+reset enable_hashjoin;
+reset enable_mergejoin;
+reset enable_material;
+reset effective_io_concurrency;
+reset work_mem;
+drop table bmscantest;
 
 -- test parallel merge join path.
 set enable_hashjoin to off;