@@ -17,6 +17,7 @@ CREATE TABLE test.range_rel (
1717 id SERIAL PRIMARY KEY,
1818 dt TIMESTAMP,
1919 txt TEXT);
20+ CREATE INDEX ON test.range_rel (dt);
2021SELECT pathman.create_range_partitions('test.range_rel', 'dt', '2015-01-01'::DATE, '1 month'::INTERVAL, 3);
2122NOTICE: sequence "range_rel_seq" does not exist, skipping
2223 create_range_partitions
@@ -34,14 +35,17 @@ NOTICE: sequence "num_range_rel_seq" does not exist, skipping
3435
3536(1 row)
3637
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;
3942INSERT INTO test.hash_rel VALUES (1, 1);
4043INSERT INTO test.hash_rel VALUES (2, 2);
4144INSERT INTO test.hash_rel VALUES (3, 3);
4245INSERT INTO test.hash_rel VALUES (4, 4);
4346INSERT INTO test.hash_rel VALUES (5, 5);
4447INSERT INTO test.hash_rel VALUES (6, 6);
48+ VACUUM;
4549/* update triggers test */
4650SELECT pathman.create_hash_update_trigger('test.hash_rel');
4751 create_hash_update_trigger
@@ -155,6 +159,46 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE (id >= 500 AND id < 1
155159 -> Seq Scan on num_range_rel_4
156160(8 rows)
157161
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+
158202SET enable_indexscan = ON;
159203SET enable_bitmapscan = OFF;
160204SET enable_seqscan = OFF;
@@ -225,6 +269,46 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE (id >= 500 AND id < 1
225269 -> Seq Scan on num_range_rel_4
226270(8 rows)
227271
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+
228312/*
229313 * Test split and merge
230314 */