11CREATE EXTENSION pathman;
2- SET enable_indexscan = OFF;
3- SET enable_bitmapscan = OFF;
42CREATE TABLE hash_rel (
53 id SERIAL PRIMARY KEY,
64 value INTEGER);
@@ -14,12 +12,26 @@ NOTICE: function hash_rel_hash_update_trigger_func() does not exist, skipping
1412
1513(1 row)
1614
15+ CREATE TABLE num_range_rel (
16+ id SERIAL PRIMARY KEY,
17+ txt TEXT);
18+ SELECT create_range_partitions('num_range_rel', 'id', 'num', 0, 1000, 3);
19+ create_range_partitions
20+ -------------------------
21+
22+ (1 row)
23+
1724INSERT INTO hash_rel VALUES (1, 1);
1825INSERT INTO hash_rel VALUES (2, 2);
1926INSERT INTO hash_rel VALUES (3, 3);
2027INSERT INTO hash_rel VALUES (4, 4);
2128INSERT INTO hash_rel VALUES (5, 5);
2229INSERT INTO hash_rel VALUES (6, 6);
30+ INSERT INTO num_range_rel SELECT g, md5(g::TEXT) FROM generate_series(1, 3000) as g;
31+ VACUUM;
32+ SET enable_indexscan = OFF;
33+ SET enable_bitmapscan = OFF;
34+ SET enable_seqscan = ON;
2335EXPLAIN (COSTS OFF) SELECT * FROM hash_rel;
2436 QUERY PLAN
2537------------------------------
@@ -47,30 +59,6 @@ EXPLAIN (COSTS OFF) SELECT * FROM hash_rel WHERE value = 2 OR value = 1;
4759 Filter: (value = 2)
4860(5 rows)
4961
50- SELECT drop_hash_partitions('hash_rel');
51- NOTICE: trigger "hash_rel_update_trigger" for relation "hash_rel" does not exist, skipping
52- NOTICE: function hash_rel_hash_update_trigger_func() does not exist, skipping
53- drop_hash_partitions
54- ----------------------
55-
56- (1 row)
57-
58- DROP TABLE hash_rel CASCADE;
59- NOTICE: drop cascades to 3 other objects
60- DETAIL: drop cascades to table hash_rel_0
61- drop cascades to table hash_rel_1
62- drop cascades to table hash_rel_2
63- CREATE TABLE num_range_rel (
64- id SERIAL PRIMARY KEY,
65- txt TEXT);
66- SELECT create_range_partitions('num_range_rel', 'id', 'num', '0', '1000', 3);
67- create_range_partitions
68- -------------------------
69-
70- (1 row)
71-
72- INSERT INTO num_range_rel SELECT g, md5(g::TEXT) FROM generate_series(1, 3000) as g;
73- VACUUM;
7462EXPLAIN (COSTS OFF) SELECT * FROM num_range_rel WHERE id > 2500;
7563 QUERY PLAN
7664--------------------------------------
@@ -111,6 +99,89 @@ EXPLAIN (COSTS OFF) SELECT * FROM num_range_rel WHERE (id >= 500 AND id < 1500)
11199 -> Seq Scan on num_range_rel_3000
112100(8 rows)
113101
102+ SET enable_indexscan = ON;
103+ SET enable_bitmapscan = OFF;
104+ SET enable_seqscan = OFF;
105+ EXPLAIN (COSTS OFF) SELECT * FROM hash_rel;
106+ QUERY PLAN
107+ ------------------------------
108+ Append
109+ -> Seq Scan on hash_rel_0
110+ -> Seq Scan on hash_rel_1
111+ -> Seq Scan on hash_rel_2
112+ (4 rows)
113+
114+ EXPLAIN (COSTS OFF) SELECT * FROM hash_rel WHERE value = 2;
115+ QUERY PLAN
116+ ------------------------------
117+ Append
118+ -> Seq Scan on hash_rel_2
119+ Filter: (value = 2)
120+ (3 rows)
121+
122+ EXPLAIN (COSTS OFF) SELECT * FROM hash_rel WHERE value = 2 OR value = 1;
123+ QUERY PLAN
124+ ------------------------------
125+ Append
126+ -> Seq Scan on hash_rel_1
127+ Filter: (value = 1)
128+ -> Seq Scan on hash_rel_2
129+ Filter: (value = 2)
130+ (5 rows)
131+
132+ EXPLAIN (COSTS OFF) SELECT * FROM num_range_rel WHERE id > 2500;
133+ QUERY PLAN
134+ ----------------------------------------------------------------------
135+ Append
136+ -> Index Scan using num_range_rel_2000_pkey on num_range_rel_2000
137+ Index Cond: (id > 2500)
138+ -> Seq Scan on num_range_rel_3000
139+ (4 rows)
140+
141+ EXPLAIN (COSTS OFF) SELECT * FROM num_range_rel WHERE id >= 1000 AND id < 3000;
142+ QUERY PLAN
143+ --------------------------------------
144+ Append
145+ -> Seq Scan on num_range_rel_1000
146+ -> Seq Scan on num_range_rel_2000
147+ (3 rows)
148+
149+ EXPLAIN (COSTS OFF) SELECT * FROM num_range_rel WHERE id >= 1500 AND id < 2500;
150+ QUERY PLAN
151+ ----------------------------------------------------------------------
152+ Append
153+ -> Index Scan using num_range_rel_1000_pkey on num_range_rel_1000
154+ Index Cond: (id >= 1500)
155+ -> Index Scan using num_range_rel_2000_pkey on num_range_rel_2000
156+ Index Cond: (id < 2500)
157+ (5 rows)
158+
159+ EXPLAIN (COSTS OFF) SELECT * FROM num_range_rel WHERE (id >= 500 AND id < 1500) OR (id > 2500);
160+ QUERY PLAN
161+ ----------------------------------------------------------------------
162+ Append
163+ -> Index Scan using num_range_rel_0_pkey on num_range_rel_0
164+ Index Cond: (id >= 500)
165+ -> Index Scan using num_range_rel_1000_pkey on num_range_rel_1000
166+ Index Cond: (id < 1500)
167+ -> Index Scan using num_range_rel_2000_pkey on num_range_rel_2000
168+ Index Cond: (id > 2500)
169+ -> Seq Scan on num_range_rel_3000
170+ (8 rows)
171+
172+ SELECT drop_hash_partitions('hash_rel');
173+ NOTICE: trigger "hash_rel_update_trigger" for relation "hash_rel" does not exist, skipping
174+ NOTICE: function hash_rel_hash_update_trigger_func() does not exist, skipping
175+ drop_hash_partitions
176+ ----------------------
177+
178+ (1 row)
179+
180+ DROP TABLE hash_rel CASCADE;
181+ NOTICE: drop cascades to 3 other objects
182+ DETAIL: drop cascades to table hash_rel_0
183+ drop cascades to table hash_rel_1
184+ drop cascades to table hash_rel_2
114185SELECT drop_range_partitions('num_range_rel');
115186 drop_range_partitions
116187-----------------------