@@ -17,6 +17,7 @@ CREATE TABLE test.range_rel (
17
17
id SERIAL PRIMARY KEY,
18
18
dt TIMESTAMP,
19
19
txt TEXT);
20
+ CREATE INDEX ON test.range_rel (dt);
20
21
SELECT pathman.create_range_partitions('test.range_rel', 'dt', '2015-01-01'::DATE, '1 month'::INTERVAL, 3);
21
22
NOTICE: sequence "range_rel_seq" does not exist, skipping
22
23
create_range_partitions
@@ -34,14 +35,17 @@ NOTICE: sequence "num_range_rel_seq" does not exist, skipping
34
35
35
36
(1 row)
36
37
37
- INSERT INTO test.num_range_rel SELECT g, md5(g::TEXT) FROM generate_series(1, 3000) as g;
38
- VACUUM;
38
+ INSERT INTO test.num_range_rel
39
+ SELECT g, md5(g::TEXT) FROM generate_series(1, 3000) as g;
40
+ INSERT INTO test.range_rel (dt, txt)
41
+ SELECT g, md5(g::TEXT) FROM generate_series('2015-01-01', '2015-04-30', '1 day'::interval) as g;
39
42
INSERT INTO test.hash_rel VALUES (1, 1);
40
43
INSERT INTO test.hash_rel VALUES (2, 2);
41
44
INSERT INTO test.hash_rel VALUES (3, 3);
42
45
INSERT INTO test.hash_rel VALUES (4, 4);
43
46
INSERT INTO test.hash_rel VALUES (5, 5);
44
47
INSERT INTO test.hash_rel VALUES (6, 6);
48
+ VACUUM;
45
49
/* update triggers test */
46
50
SELECT pathman.create_hash_update_trigger('test.hash_rel');
47
51
create_hash_update_trigger
@@ -155,6 +159,46 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE (id >= 500 AND id < 1
155
159
-> Seq Scan on num_range_rel_4
156
160
(8 rows)
157
161
162
+ EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE dt > '2015-02-15';
163
+ QUERY PLAN
164
+ --------------------------------------------------------------------------------
165
+ Append
166
+ -> Seq Scan on range_rel_2
167
+ Filter: (dt > 'Sun Feb 15 00:00:00 2015'::timestamp without time zone)
168
+ -> Seq Scan on range_rel_3
169
+ -> Seq Scan on range_rel_4
170
+ (5 rows)
171
+
172
+ EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE dt >= '2015-02-01' AND dt < '2015-03-01';
173
+ QUERY PLAN
174
+ -------------------------------
175
+ Append
176
+ -> Seq Scan on range_rel_2
177
+ (2 rows)
178
+
179
+ EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE dt >= '2015-02-15' AND dt < '2015-03-15';
180
+ QUERY PLAN
181
+ ---------------------------------------------------------------------------------
182
+ Append
183
+ -> Seq Scan on range_rel_2
184
+ Filter: (dt >= 'Sun Feb 15 00:00:00 2015'::timestamp without time zone)
185
+ -> Seq Scan on range_rel_3
186
+ Filter: (dt < 'Sun Mar 15 00:00:00 2015'::timestamp without time zone)
187
+ (5 rows)
188
+
189
+ EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE (dt >= '2015-01-15' AND dt < '2015-02-15') OR (dt > '2015-03-15');
190
+ QUERY PLAN
191
+ ---------------------------------------------------------------------------------
192
+ Append
193
+ -> Seq Scan on range_rel_1
194
+ Filter: (dt >= 'Thu Jan 15 00:00:00 2015'::timestamp without time zone)
195
+ -> Seq Scan on range_rel_2
196
+ Filter: (dt < 'Sun Feb 15 00:00:00 2015'::timestamp without time zone)
197
+ -> Seq Scan on range_rel_3
198
+ Filter: (dt > 'Sun Mar 15 00:00:00 2015'::timestamp without time zone)
199
+ -> Seq Scan on range_rel_4
200
+ (8 rows)
201
+
158
202
SET enable_indexscan = ON;
159
203
SET enable_bitmapscan = OFF;
160
204
SET enable_seqscan = OFF;
@@ -225,6 +269,46 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE (id >= 500 AND id < 1
225
269
-> Seq Scan on num_range_rel_4
226
270
(8 rows)
227
271
272
+ EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE dt > '2015-02-15';
273
+ QUERY PLAN
274
+ ------------------------------------------------------------------------------------
275
+ Append
276
+ -> Index Scan using range_rel_2_dt_idx on range_rel_2
277
+ Index Cond: (dt > 'Sun Feb 15 00:00:00 2015'::timestamp without time zone)
278
+ -> Seq Scan on range_rel_3
279
+ -> Seq Scan on range_rel_4
280
+ (5 rows)
281
+
282
+ EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE dt >= '2015-02-01' AND dt < '2015-03-01';
283
+ QUERY PLAN
284
+ -------------------------------
285
+ Append
286
+ -> Seq Scan on range_rel_2
287
+ (2 rows)
288
+
289
+ EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE dt >= '2015-02-15' AND dt < '2015-03-15';
290
+ QUERY PLAN
291
+ -------------------------------------------------------------------------------------
292
+ Append
293
+ -> Index Scan using range_rel_2_dt_idx on range_rel_2
294
+ Index Cond: (dt >= 'Sun Feb 15 00:00:00 2015'::timestamp without time zone)
295
+ -> Index Scan using range_rel_3_dt_idx on range_rel_3
296
+ Index Cond: (dt < 'Sun Mar 15 00:00:00 2015'::timestamp without time zone)
297
+ (5 rows)
298
+
299
+ EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE (dt >= '2015-01-15' AND dt < '2015-02-15') OR (dt > '2015-03-15');
300
+ QUERY PLAN
301
+ -------------------------------------------------------------------------------------
302
+ Append
303
+ -> Index Scan using range_rel_1_dt_idx on range_rel_1
304
+ Index Cond: (dt >= 'Thu Jan 15 00:00:00 2015'::timestamp without time zone)
305
+ -> Index Scan using range_rel_2_dt_idx on range_rel_2
306
+ Index Cond: (dt < 'Sun Feb 15 00:00:00 2015'::timestamp without time zone)
307
+ -> Index Scan using range_rel_3_dt_idx on range_rel_3
308
+ Index Cond: (dt > 'Sun Mar 15 00:00:00 2015'::timestamp without time zone)
309
+ -> Seq Scan on range_rel_4
310
+ (8 rows)
311
+
228
312
/*
229
313
* Test split and merge
230
314
*/