1
1
CREATE EXTENSION pathman;
2
+ SET enable_indexscan = OFF;
3
+ SET enable_bitmapscan = OFF;
2
4
CREATE TABLE hash_rel (
3
5
id SERIAL PRIMARY KEY,
4
6
value INTEGER);
@@ -18,23 +20,33 @@ INSERT INTO hash_rel VALUES (3, 3);
18
20
INSERT INTO hash_rel VALUES (4, 4);
19
21
INSERT INTO hash_rel VALUES (5, 5);
20
22
INSERT INTO hash_rel VALUES (6, 6);
21
- EXPLAIN SELECT * FROM hash_rel;
22
- QUERY PLAN
23
- -----------------------------------------------------------------
24
- Append (cost=0.00..97.80 rows=0 width=0)
25
- -> Seq Scan on hash_rel_0 (cost=0.00..32.60 rows=0 width=0)
26
- -> Seq Scan on hash_rel_1 (cost=0.00..32.60 rows=0 width=0)
27
- -> Seq Scan on hash_rel_2 (cost=0.00..32.60 rows=0 width=0)
23
+ EXPLAIN(COSTS OFF) SELECT * FROM hash_rel;
24
+ QUERY PLAN
25
+ ------------------------------
26
+ Append
27
+ -> Seq Scan on hash_rel_0
28
+ -> Seq Scan on hash_rel_1
29
+ -> Seq Scan on hash_rel_2
28
30
(4 rows)
29
31
30
- EXPLAIN SELECT * FROM hash_rel WHERE value = 2;
31
- QUERY PLAN
32
- -----------------------------------------------------------------
33
- Append (cost=0.00..32.60 rows=0 width=0)
34
- -> Seq Scan on hash_rel_2 (cost=0.00..32.60 rows=0 width=0)
32
+ EXPLAIN(COSTS OFF) SELECT * FROM hash_rel WHERE value = 2;
33
+ QUERY PLAN
34
+ ------------------------------
35
+ Append
36
+ -> Seq Scan on hash_rel_2
35
37
Filter: (value = 2)
36
38
(3 rows)
37
39
40
+ EXPLAIN (COSTS OFF) SELECT * FROM hash_rel WHERE value = 2 OR value = 1;
41
+ QUERY PLAN
42
+ ------------------------------
43
+ Append
44
+ -> Seq Scan on hash_rel_1
45
+ Filter: (value = 1)
46
+ -> Seq Scan on hash_rel_2
47
+ Filter: (value = 2)
48
+ (5 rows)
49
+
38
50
SELECT drop_hash_partitions('hash_rel');
39
51
NOTICE: trigger "hash_rel_update_trigger" for relation "hash_rel" does not exist, skipping
40
52
NOTICE: function hash_rel_hash_update_trigger_func() does not exist, skipping
@@ -59,16 +71,46 @@ SELECT create_range_partitions('num_range_rel', 'id', 'num', '0', '1000', 3);
59
71
60
72
INSERT INTO num_range_rel SELECT g, md5(g::TEXT) FROM generate_series(1, 3000) as g;
61
73
VACUUM;
62
- EXPLAIN SELECT * FROM num_range_rel WHERE id > 2500;
63
- QUERY PLAN
64
- -------------------------------------------------------------------------
65
- Append (cost=0.00..20.01 rows=0 width=0)
66
- -> Seq Scan on num_range_rel_2000 (cost=0.00..19.00 rows=0 width=0)
67
- Filter: (id > 2500)
68
- -> Seq Scan on num_range_rel_3000 (cost=0.00..1.01 rows=0 width=0)
74
+ EXPLAIN (COSTS OFF) SELECT * FROM num_range_rel WHERE id > 2500;
75
+ QUERY PLAN
76
+ --------------------------------------
77
+ Append
78
+ -> Seq Scan on num_range_rel_2000
69
79
Filter: (id > 2500)
80
+ -> Seq Scan on num_range_rel_3000
81
+ (4 rows)
82
+
83
+ EXPLAIN (COSTS OFF) SELECT * FROM num_range_rel WHERE id >= 1000 AND id < 3000;
84
+ QUERY PLAN
85
+ --------------------------------------
86
+ Append
87
+ -> Seq Scan on num_range_rel_1000
88
+ -> Seq Scan on num_range_rel_2000
89
+ (3 rows)
90
+
91
+ EXPLAIN (COSTS OFF) SELECT * FROM num_range_rel WHERE id >= 1500 AND id < 2500;
92
+ QUERY PLAN
93
+ --------------------------------------
94
+ Append
95
+ -> Seq Scan on num_range_rel_1000
96
+ Filter: (id >= 1500)
97
+ -> Seq Scan on num_range_rel_2000
98
+ Filter: (id < 2500)
70
99
(5 rows)
71
100
101
+ EXPLAIN (COSTS OFF) SELECT * FROM num_range_rel WHERE (id >= 500 AND id < 1500) OR (id > 2500);
102
+ QUERY PLAN
103
+ --------------------------------------
104
+ Append
105
+ -> Seq Scan on num_range_rel_0
106
+ Filter: (id >= 500)
107
+ -> Seq Scan on num_range_rel_1000
108
+ Filter: (id < 1500)
109
+ -> Seq Scan on num_range_rel_2000
110
+ Filter: (id > 2500)
111
+ -> Seq Scan on num_range_rel_3000
112
+ (8 rows)
113
+
72
114
SELECT drop_range_partitions('num_range_rel');
73
115
drop_range_partitions
74
116
-----------------------