@@ -70,9 +70,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.hash_rel WHERE value = 7;
70
70
Append
71
71
-> Seq Scan on hash_rel_1
72
72
Filter: (value = 7)
73
- -> Seq Scan on hash_rel
74
- Filter: (value = 7)
75
- (5 rows)
73
+ (3 rows)
76
74
77
75
SELECT * FROM test.hash_rel WHERE value = 7;
78
76
id | value
@@ -93,9 +91,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE id = 3001;
93
91
Append
94
92
-> Seq Scan on num_range_rel_4
95
93
Filter: (id = 3001)
96
- -> Seq Scan on num_range_rel
97
- Filter: (id = 3001)
98
- (5 rows)
94
+ (3 rows)
99
95
100
96
SELECT * FROM test.num_range_rel WHERE id = 3001;
101
97
id | txt
@@ -113,30 +109,25 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.hash_rel;
113
109
-> Seq Scan on hash_rel_0
114
110
-> Seq Scan on hash_rel_1
115
111
-> Seq Scan on hash_rel_2
116
- -> Seq Scan on hash_rel
117
- (5 rows)
112
+ (4 rows)
118
113
119
114
EXPLAIN (COSTS OFF) SELECT * FROM test.hash_rel WHERE value = 2;
120
115
QUERY PLAN
121
116
------------------------------
122
117
Append
123
118
-> Seq Scan on hash_rel_2
124
119
Filter: (value = 2)
125
- -> Seq Scan on hash_rel
126
- Filter: (value = 2)
127
- (5 rows)
120
+ (3 rows)
128
121
129
122
EXPLAIN (COSTS OFF) SELECT * FROM test.hash_rel WHERE value = 2 OR value = 1;
130
- QUERY PLAN
131
- ----------------------------------------------
123
+ QUERY PLAN
124
+ ------------------------------
132
125
Append
133
126
-> Seq Scan on hash_rel_1
134
127
Filter: (value = 1)
135
128
-> Seq Scan on hash_rel_2
136
129
Filter: (value = 2)
137
- -> Seq Scan on hash_rel
138
- Filter: ((value = 2) OR (value = 1))
139
- (7 rows)
130
+ (5 rows)
140
131
141
132
EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE id > 2500;
142
133
QUERY PLAN
@@ -145,35 +136,29 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE id > 2500;
145
136
-> Seq Scan on num_range_rel_3
146
137
Filter: (id > 2500)
147
138
-> Seq Scan on num_range_rel_4
148
- -> Seq Scan on num_range_rel
149
- Filter: (id > 2500)
150
- (6 rows)
139
+ (4 rows)
151
140
152
141
EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE id >= 1000 AND id < 3000;
153
- QUERY PLAN
154
- ------------------------------------------------
142
+ QUERY PLAN
143
+ -----------------------------------
155
144
Append
156
145
-> Seq Scan on num_range_rel_2
157
146
-> Seq Scan on num_range_rel_3
158
- -> Seq Scan on num_range_rel
159
- Filter: ((id >= 1000) AND (id < 3000))
160
- (5 rows)
147
+ (3 rows)
161
148
162
149
EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE id >= 1500 AND id < 2500;
163
- QUERY PLAN
164
- ------------------------------------------------
150
+ QUERY PLAN
151
+ -----------------------------------
165
152
Append
166
153
-> Seq Scan on num_range_rel_2
167
154
Filter: (id >= 1500)
168
155
-> Seq Scan on num_range_rel_3
169
156
Filter: (id < 2500)
170
- -> Seq Scan on num_range_rel
171
- Filter: ((id >= 1500) AND (id < 2500))
172
- (7 rows)
157
+ (5 rows)
173
158
174
159
EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE (id >= 500 AND id < 1500) OR (id > 2500);
175
- QUERY PLAN
176
- ----------------------------------------------------------------
160
+ QUERY PLAN
161
+ -----------------------------------
177
162
Append
178
163
-> Seq Scan on num_range_rel_1
179
164
Filter: (id >= 500)
@@ -182,9 +167,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE (id >= 500 AND id < 1
182
167
-> Seq Scan on num_range_rel_3
183
168
Filter: (id > 2500)
184
169
-> Seq Scan on num_range_rel_4
185
- -> Seq Scan on num_range_rel
186
- Filter: (((id >= 500) AND (id < 1500)) OR (id > 2500))
187
- (10 rows)
170
+ (8 rows)
188
171
189
172
EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE dt > '2015-02-15';
190
173
QUERY PLAN
@@ -194,34 +177,28 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE dt > '2015-02-15';
194
177
Filter: (dt > 'Sun Feb 15 00:00:00 2015'::timestamp without time zone)
195
178
-> Seq Scan on range_rel_3
196
179
-> Seq Scan on range_rel_4
197
- -> Seq Scan on range_rel
198
- Filter: (dt > 'Sun Feb 15 00:00:00 2015'::timestamp without time zone)
199
- (7 rows)
180
+ (5 rows)
200
181
201
182
EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE dt >= '2015-02-01' AND dt < '2015-03-01';
202
- QUERY PLAN
203
- ------------------------------------------------------------------------------------------------------------------------------------------------------
183
+ QUERY PLAN
184
+ -------------------------------
204
185
Append
205
186
-> Seq Scan on range_rel_2
206
- -> Seq Scan on range_rel
207
- Filter: ((dt >= 'Sun Feb 01 00:00:00 2015'::timestamp without time zone) AND (dt < 'Sun Mar 01 00:00:00 2015'::timestamp without time zone))
208
- (4 rows)
187
+ (2 rows)
209
188
210
189
EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE dt >= '2015-02-15' AND dt < '2015-03-15';
211
- QUERY PLAN
212
- ------------------------------------------------------------------------------------------------------------------------------------------------------
190
+ QUERY PLAN
191
+ ---------------------------------------------------------------------------------
213
192
Append
214
193
-> Seq Scan on range_rel_2
215
194
Filter: (dt >= 'Sun Feb 15 00:00:00 2015'::timestamp without time zone)
216
195
-> Seq Scan on range_rel_3
217
196
Filter: (dt < 'Sun Mar 15 00:00:00 2015'::timestamp without time zone)
218
- -> Seq Scan on range_rel
219
- Filter: ((dt >= 'Sun Feb 15 00:00:00 2015'::timestamp without time zone) AND (dt < 'Sun Mar 15 00:00:00 2015'::timestamp without time zone))
220
- (7 rows)
197
+ (5 rows)
221
198
222
199
EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE (dt >= '2015-01-15' AND dt < '2015-02-15') OR (dt > '2015-03-15');
223
- QUERY PLAN
224
- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
200
+ QUERY PLAN
201
+ ---------------------------------------------------------------------------------
225
202
Append
226
203
-> Seq Scan on range_rel_1
227
204
Filter: (dt >= 'Thu Jan 15 00:00:00 2015'::timestamp without time zone)
@@ -230,9 +207,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE (dt >= '2015-01-15' AND d
230
207
-> Seq Scan on range_rel_3
231
208
Filter: (dt > 'Sun Mar 15 00:00:00 2015'::timestamp without time zone)
232
209
-> Seq Scan on range_rel_4
233
- -> Seq Scan on range_rel
234
- Filter: (((dt >= 'Thu Jan 15 00:00:00 2015'::timestamp without time zone) AND (dt < 'Sun Feb 15 00:00:00 2015'::timestamp without time zone)) OR (dt > 'Sun Mar 15 00:00:00 2015'::timestamp without time zone))
235
- (10 rows)
210
+ (8 rows)
236
211
237
212
SET enable_indexscan = ON;
238
213
SET enable_bitmapscan = OFF;
@@ -244,30 +219,25 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.hash_rel;
244
219
-> Seq Scan on hash_rel_0
245
220
-> Seq Scan on hash_rel_1
246
221
-> Seq Scan on hash_rel_2
247
- -> Seq Scan on hash_rel
248
- (5 rows)
222
+ (4 rows)
249
223
250
224
EXPLAIN (COSTS OFF) SELECT * FROM test.hash_rel WHERE value = 2;
251
225
QUERY PLAN
252
226
------------------------------
253
227
Append
254
228
-> Seq Scan on hash_rel_2
255
229
Filter: (value = 2)
256
- -> Seq Scan on hash_rel
257
- Filter: (value = 2)
258
- (5 rows)
230
+ (3 rows)
259
231
260
232
EXPLAIN (COSTS OFF) SELECT * FROM test.hash_rel WHERE value = 2 OR value = 1;
261
- QUERY PLAN
262
- ----------------------------------------------
233
+ QUERY PLAN
234
+ ------------------------------
263
235
Append
264
236
-> Seq Scan on hash_rel_1
265
237
Filter: (value = 1)
266
238
-> Seq Scan on hash_rel_2
267
239
Filter: (value = 2)
268
- -> Seq Scan on hash_rel
269
- Filter: ((value = 2) OR (value = 1))
270
- (7 rows)
240
+ (5 rows)
271
241
272
242
EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE id > 2500;
273
243
QUERY PLAN
@@ -276,19 +246,15 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE id > 2500;
276
246
-> Index Scan using num_range_rel_3_pkey on num_range_rel_3
277
247
Index Cond: (id > 2500)
278
248
-> Seq Scan on num_range_rel_4
279
- -> Index Scan using num_range_rel_pkey on num_range_rel
280
- Index Cond: (id > 2500)
281
- (6 rows)
249
+ (4 rows)
282
250
283
251
EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE id >= 1000 AND id < 3000;
284
- QUERY PLAN
285
- ------------------------------------------------------------
252
+ QUERY PLAN
253
+ -----------------------------------
286
254
Append
287
255
-> Seq Scan on num_range_rel_2
288
256
-> Seq Scan on num_range_rel_3
289
- -> Index Scan using num_range_rel_pkey on num_range_rel
290
- Index Cond: ((id >= 1000) AND (id < 3000))
291
- (5 rows)
257
+ (3 rows)
292
258
293
259
EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE id >= 1500 AND id < 2500;
294
260
QUERY PLAN
@@ -298,9 +264,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE id >= 1500 AND id < 2
298
264
Index Cond: (id >= 1500)
299
265
-> Index Scan using num_range_rel_3_pkey on num_range_rel_3
300
266
Index Cond: (id < 2500)
301
- -> Index Scan using num_range_rel_pkey on num_range_rel
302
- Index Cond: ((id >= 1500) AND (id < 2500))
303
- (7 rows)
267
+ (5 rows)
304
268
305
269
EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE (id >= 500 AND id < 1500) OR (id > 2500);
306
270
QUERY PLAN
@@ -313,9 +277,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE (id >= 500 AND id < 1
313
277
-> Index Scan using num_range_rel_3_pkey on num_range_rel_3
314
278
Index Cond: (id > 2500)
315
279
-> Seq Scan on num_range_rel_4
316
- -> Seq Scan on num_range_rel
317
- Filter: (((id >= 500) AND (id < 1500)) OR (id > 2500))
318
- (10 rows)
280
+ (8 rows)
319
281
320
282
EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE dt > '2015-02-15';
321
283
QUERY PLAN
@@ -325,34 +287,28 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE dt > '2015-02-15';
325
287
Index Cond: (dt > 'Sun Feb 15 00:00:00 2015'::timestamp without time zone)
326
288
-> Seq Scan on range_rel_3
327
289
-> Seq Scan on range_rel_4
328
- -> Index Scan using range_rel_dt_idx on range_rel
329
- Index Cond: (dt > 'Sun Feb 15 00:00:00 2015'::timestamp without time zone)
330
- (7 rows)
290
+ (5 rows)
331
291
332
292
EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE dt >= '2015-02-01' AND dt < '2015-03-01';
333
- QUERY PLAN
334
- ----------------------------------------------------------------------------------------------------------------------------------------------------------
293
+ QUERY PLAN
294
+ -------------------------------
335
295
Append
336
296
-> Seq Scan on range_rel_2
337
- -> Index Scan using range_rel_dt_idx on range_rel
338
- Index Cond: ((dt >= 'Sun Feb 01 00:00:00 2015'::timestamp without time zone) AND (dt < 'Sun Mar 01 00:00:00 2015'::timestamp without time zone))
339
- (4 rows)
297
+ (2 rows)
340
298
341
299
EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE dt >= '2015-02-15' AND dt < '2015-03-15';
342
- QUERY PLAN
343
- ----------------------------------------------------------------------------------------------------------------------------------------------------------
300
+ QUERY PLAN
301
+ -------------------------------------------------------------------------------------
344
302
Append
345
303
-> Index Scan using range_rel_2_dt_idx on range_rel_2
346
304
Index Cond: (dt >= 'Sun Feb 15 00:00:00 2015'::timestamp without time zone)
347
305
-> Index Scan using range_rel_3_dt_idx on range_rel_3
348
306
Index Cond: (dt < 'Sun Mar 15 00:00:00 2015'::timestamp without time zone)
349
- -> Index Scan using range_rel_dt_idx on range_rel
350
- Index Cond: ((dt >= 'Sun Feb 15 00:00:00 2015'::timestamp without time zone) AND (dt < 'Sun Mar 15 00:00:00 2015'::timestamp without time zone))
351
- (7 rows)
307
+ (5 rows)
352
308
353
309
EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE (dt >= '2015-01-15' AND dt < '2015-02-15') OR (dt > '2015-03-15');
354
- QUERY PLAN
355
- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
310
+ QUERY PLAN
311
+ -------------------------------------------------------------------------------------
356
312
Append
357
313
-> Index Scan using range_rel_1_dt_idx on range_rel_1
358
314
Index Cond: (dt >= 'Thu Jan 15 00:00:00 2015'::timestamp without time zone)
@@ -361,9 +317,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE (dt >= '2015-01-15' AND d
361
317
-> Index Scan using range_rel_3_dt_idx on range_rel_3
362
318
Index Cond: (dt > 'Sun Mar 15 00:00:00 2015'::timestamp without time zone)
363
319
-> Seq Scan on range_rel_4
364
- -> Seq Scan on range_rel
365
- Filter: (((dt >= 'Thu Jan 15 00:00:00 2015'::timestamp without time zone) AND (dt < 'Sun Feb 15 00:00:00 2015'::timestamp without time zone)) OR (dt > 'Sun Mar 15 00:00:00 2015'::timestamp without time zone))
366
- (10 rows)
320
+ (8 rows)
367
321
368
322
/*
369
323
* Test split and merge
@@ -387,9 +341,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE id BETWEEN 100 AND 70
387
341
Index Cond: (id >= 100)
388
342
-> Index Scan using num_range_rel_5_pkey on num_range_rel_5
389
343
Index Cond: (id <= 700)
390
- -> Index Scan using num_range_rel_pkey on num_range_rel
391
- Index Cond: ((id >= 100) AND (id <= 700))
392
- (7 rows)
344
+ (5 rows)
393
345
394
346
SELECT pathman.split_range_partition('test.range_rel_1', '2015-01-15'::DATE);
395
347
NOTICE: Creating new partition...
@@ -418,9 +370,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.num_range_rel WHERE id BETWEEN 100 AND 70
418
370
Append
419
371
-> Index Scan using num_range_rel_1_pkey on num_range_rel_1
420
372
Index Cond: ((id >= 100) AND (id <= 700))
421
- -> Index Scan using num_range_rel_pkey on num_range_rel
422
- Index Cond: ((id >= 100) AND (id <= 700))
423
- (5 rows)
373
+ (3 rows)
424
374
425
375
SELECT pathman.merge_range_partitions('test.range_rel_1', 'test.range_rel_' || currval('test.range_rel_seq'));
426
376
NOTICE: Altering first partition...
@@ -531,9 +481,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM hash_rel WHERE id = 1234;
531
481
Index Cond: (id = 1234)
532
482
-> Index Scan using hash_rel_2_pkey on hash_rel_2
533
483
Index Cond: (id = 1234)
534
- -> Index Scan using hash_rel_pkey on hash_rel
535
- Index Cond: (id = 1234)
536
- (9 rows)
484
+ (7 rows)
537
485
538
486
/* Range */
539
487
CREATE TABLE range_rel (
@@ -602,24 +550,20 @@ NOTICE: Done!
602
550
(1 row)
603
551
604
552
EXPLAIN (COSTS OFF) SELECT * FROM range_rel WHERE dt < '2010-03-01';
605
- QUERY PLAN
606
- --------------------------------------------------------------------------------
553
+ QUERY PLAN
554
+ --------------------------------
607
555
Append
608
556
-> Seq Scan on range_rel_1
609
557
-> Seq Scan on range_rel_13
610
- -> Seq Scan on range_rel
611
- Filter: (dt < 'Mon Mar 01 00:00:00 2010'::timestamp without time zone)
612
- (5 rows)
558
+ (3 rows)
613
559
614
560
EXPLAIN (COSTS OFF) SELECT * FROM range_rel WHERE dt > '2010-12-15';
615
561
QUERY PLAN
616
562
--------------------------------------------------------------------------------
617
563
Append
618
564
-> Seq Scan on range_rel_12
619
565
Filter: (dt > 'Wed Dec 15 00:00:00 2010'::timestamp without time zone)
620
- -> Seq Scan on range_rel
621
- Filter: (dt > 'Wed Dec 15 00:00:00 2010'::timestamp without time zone)
622
- (5 rows)
566
+ (3 rows)
623
567
624
568
/* Manual partitions creation */
625
569
CREATE TABLE range_rel_archive (CHECK (dt >= '2000-01-01' AND dt < '2005-01-01')) INHERITS (range_rel);
@@ -630,15 +574,13 @@ SELECT on_update_partitions('range_rel'::regclass::oid);
630
574
(1 row)
631
575
632
576
EXPLAIN (COSTS OFF) SELECT * FROM range_rel WHERE dt < '2010-03-01';
633
- QUERY PLAN
634
- --------------------------------------------------------------------------------
577
+ QUERY PLAN
578
+ -------------------------------------
635
579
Append
636
580
-> Seq Scan on range_rel_archive
637
581
-> Seq Scan on range_rel_15
638
582
-> Seq Scan on range_rel_1
639
583
-> Seq Scan on range_rel_13
640
- -> Seq Scan on range_rel
641
- Filter: (dt < 'Mon Mar 01 00:00:00 2010'::timestamp without time zone)
642
- (7 rows)
584
+ (5 rows)
643
585
644
586
DROP EXTENSION pg_pathman;
0 commit comments