@@ -1452,6 +1452,62 @@ CREATE TABLE test.range_rel_test2 (
1452
1452
dt TIMESTAMP);
1453
1453
SELECT pathman.attach_range_partition('test.range_rel', 'test.range_rel_test2', '2013-01-01'::DATE, '2014-01-01'::DATE);
1454
1454
ERROR: partition must have the exact same structure as parent
1455
+ /* Half open ranges */
1456
+ SELECT pathman.add_range_partition('test.range_rel', NULL, '2014-12-01'::DATE, 'test.range_rel_minus_infinity');
1457
+ add_range_partition
1458
+ -------------------------------
1459
+ test.range_rel_minus_infinity
1460
+ (1 row)
1461
+
1462
+ SELECT pathman.add_range_partition('test.range_rel', '2015-06-01'::DATE, NULL, 'test.range_rel_plus_infinity');
1463
+ add_range_partition
1464
+ ------------------------------
1465
+ test.range_rel_plus_infinity
1466
+ (1 row)
1467
+
1468
+ SELECT pathman.append_range_partition('test.range_rel');
1469
+ ERROR: Cannot append partition because last partition's range is half open
1470
+ SELECT pathman.prepend_range_partition('test.range_rel');
1471
+ ERROR: Cannot prepend partition because first partition's range is half open
1472
+ DROP TABLE test.range_rel_minus_infinity;
1473
+ CREATE TABLE test.range_rel_minus_infinity (LIKE test.range_rel INCLUDING ALL);
1474
+ SELECT pathman.attach_range_partition('test.range_rel', 'test.range_rel_minus_infinity', NULL, '2014-12-01'::DATE);
1475
+ attach_range_partition
1476
+ -------------------------------
1477
+ test.range_rel_minus_infinity
1478
+ (1 row)
1479
+
1480
+ SELECT * FROM pathman.pathman_partition_list WHERE parent = 'test.range_rel'::REGCLASS;
1481
+ parent | partition | parttype | partattr | range_min | range_max
1482
+ ----------------+-------------------------------+----------+----------+--------------------------+--------------------------
1483
+ test.range_rel | test.range_rel_minus_infinity | 2 | dt | NULL | Mon Dec 01 00:00:00 2014
1484
+ test.range_rel | test.range_rel_8 | 2 | dt | Mon Dec 01 00:00:00 2014 | Thu Jan 01 00:00:00 2015
1485
+ test.range_rel | test.range_rel_1 | 2 | dt | Thu Jan 01 00:00:00 2015 | Sun Feb 01 00:00:00 2015
1486
+ test.range_rel | test.range_rel_2 | 2 | dt | Sun Feb 01 00:00:00 2015 | Sun Mar 01 00:00:00 2015
1487
+ test.range_rel | test.range_rel_3 | 2 | dt | Sun Mar 01 00:00:00 2015 | Wed Apr 01 00:00:00 2015
1488
+ test.range_rel | test.range_rel_4 | 2 | dt | Wed Apr 01 00:00:00 2015 | Fri May 01 00:00:00 2015
1489
+ test.range_rel | test.range_rel_6 | 2 | dt | Fri May 01 00:00:00 2015 | Mon Jun 01 00:00:00 2015
1490
+ test.range_rel | test.range_rel_plus_infinity | 2 | dt | Mon Jun 01 00:00:00 2015 | NULL
1491
+ (8 rows)
1492
+
1493
+ INSERT INTO test.range_rel (dt) VALUES ('2012-06-15');
1494
+ INSERT INTO test.range_rel (dt) VALUES ('2015-12-15');
1495
+ EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE dt < '2015-01-01';
1496
+ QUERY PLAN
1497
+ --------------------------------------------
1498
+ Append
1499
+ -> Seq Scan on range_rel_minus_infinity
1500
+ -> Seq Scan on range_rel_8
1501
+ (3 rows)
1502
+
1503
+ EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE dt >= '2015-05-01';
1504
+ QUERY PLAN
1505
+ -------------------------------------------
1506
+ Append
1507
+ -> Seq Scan on range_rel_6
1508
+ -> Seq Scan on range_rel_plus_infinity
1509
+ (3 rows)
1510
+
1455
1511
/*
1456
1512
* Zero partitions count and adding partitions with specified name
1457
1513
*/
@@ -1560,7 +1616,7 @@ NOTICE: 0 rows copied from test.num_range_rel_6
1560
1616
1561
1617
DROP TABLE test.num_range_rel CASCADE;
1562
1618
DROP TABLE test.range_rel CASCADE;
1563
- NOTICE: drop cascades to 7 other objects
1619
+ NOTICE: drop cascades to 9 other objects
1564
1620
/* Test automatic partition creation */
1565
1621
CREATE TABLE test.range_rel (
1566
1622
id SERIAL PRIMARY KEY,
0 commit comments