Hi,

I noticed a failure in the inet.sql test while running the regression
tests with parallelism cranked up, and can reproduce it interactively
as follows.  After an spgist index is created and the plan changes to
the one shown below, the query returns no rows.

regression=# set force_parallel_mode = regress;
SET
regression=# set max_parallel_workers_per_gather = 2;
SET
regression=# set parallel_tuple_cost = 0;
SET
regression=# set parallel_setup_cost = 0;
SET
regression=# set min_parallel_table_scan_size = 0;
SET
regression=# set min_parallel_index_scan_size = 0;
SET
regression=# set enable_seqscan = off;
SET
regression=# SELECT * FROM inet_tbl WHERE i <> '192.168.1.0/24'::cidr
ORDER BY i;

c          |        i
--------------------+------------------
 10.0.0.0/8         | 9.1.2.3/8
 10.0.0.0/8         | 10.1.2.3/8
 10.0.0.0/32        | 10.1.2.3/8
 10.0.0.0/8         | 10.1.2.3/8
 10.1.0.0/16        | 10.1.2.3/16
 10.1.2.0/24        | 10.1.2.3/24
 10.1.2.3/32        | 10.1.2.3
 10.0.0.0/8         | 11.1.2.3/8
 192.168.1.0/24     | 192.168.1.226/24
 192.168.1.0/24     | 192.168.1.255/24
 192.168.1.0/24     | 192.168.1.0/25
 192.168.1.0/24     | 192.168.1.255/25
 192.168.1.0/26     | 192.168.1.226
 10.0.0.0/8         | 10::/8
 ::ffff:1.2.3.4/128 | ::4.3.2.1/24
 10:23::f1/128      | 10:23::f1/64
 10:23::8000/113    | 10:23::ffff
(17 rows)

regression=# CREATE INDEX inet_idx3 ON inet_tbl using spgist (i);
CREATE INDEX
regression=# SELECT * FROM inet_tbl WHERE i <> '192.168.1.0/24'::cidr
ORDER BY i;
 c | i
---+---
(0 rows)

regression=# explain SELECT * FROM inet_tbl WHERE i <>
'192.168.1.0/24'::cidr ORDER BY i;
                                       QUERY PLAN
-----------------------------------------------------------------------------------------
 Gather Merge  (cost=16.57..16.67 rows=10 width=64)
   Workers Planned: 1
   ->  Sort  (cost=16.56..16.58 rows=10 width=64)
         Sort Key: i
         ->  Parallel Bitmap Heap Scan on inet_tbl  (cost=12.26..16.39
rows=10 width=64)
               Recheck Cond: (i <> '192.168.1.0/24'::inet)
               ->  Bitmap Index Scan on inet_idx3  (cost=0.00..12.26
rows=17 width=0)
                     Index Cond: (i <> '192.168.1.0/24'::inet)
(8 rows)


-- 
Thomas Munro
http://www.enterprisedb.com


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to