@@ -21,7 +21,6 @@ CREATE TABLE calamity.part_test(val serial);
2121/* test pg_pathman's cache */
2222INSERT INTO calamity.part_test SELECT generate_series(1, 30);
2323SELECT create_range_partitions('calamity.part_test', 'val', 1, 10);
24- NOTICE: sequence "part_test_seq" does not exist, skipping
2524 create_range_partitions
2625-------------------------
2726 3
@@ -270,20 +269,22 @@ SELECT build_range_condition('calamity.part_test', 'val', NULL, 10); /* OK */
270269(1 row)
271270
272271/* check function validate_interval_value() */
273- SELECT validate_interval_value(NULL, 2, '1 mon'); /* not ok */
274- ERROR: 'atttype' should not be NULL
275- SELECT validate_interval_value('interval'::regtype, NULL, '1 mon'); /* not ok */
272+ SELECT validate_interval_value(1::REGCLASS, 'expr', 2, '1 mon', 'cooked_expr'); /* not ok */
273+ ERROR: relation "1" does not exist
274+ SELECT validate_interval_value(NULL, 'expr', 2, '1 mon', 'cooked_expr'); /* not ok */
275+ ERROR: 'partrel' should not be NULL
276+ SELECT validate_interval_value('pg_class', NULL, 2, '1 mon', 'cooked_expr'); /* not ok */
277+ ERROR: 'expression' should not be NULL
278+ SELECT validate_interval_value('pg_class', 'oid', NULL, '1 mon', 'cooked_expr'); /* not ok */
276279ERROR: 'parttype' should not be NULL
277- SELECT validate_interval_value('int4'::regtype, 2, '1 mon'); /* not ok */
278- ERROR: invalid input syntax for integer: "1 mon"
279- SELECT validate_interval_value('interval'::regtype, 1, '1 mon'); /* not ok */
280+ SELECT validate_interval_value('pg_class', 'oid', 1, 'HASH', NULL); /* not ok */
280281ERROR: interval should be NULL for HASH partitioned table
281- SELECT validate_interval_value('interval'::regtype, 2, NULL); /* OK */
282- validate_interval_value
283- -------------------------
284- t
285- (1 row)
286-
282+ SELECT validate_interval_value('pg_class', 'expr', 2, '1 mon', NULL); /* not ok */
283+ ERROR: cannot find type name for attribute "expr" of relation "pg_class"
284+ SELECT validate_interval_value('pg_class', 'expr', 2, NULL, 'cooked_expr'); /* not ok */
285+ ERROR: unrecognized token: "cooked_expr"
286+ SELECT validate_interval_value('pg_class', 'EXPR', 1, 'HASH', NULL); /* not ok */
287+ ERROR: cannot find type name for attribute "expr" of relation "pg_class"
287288/* check function validate_relname() */
288289SELECT validate_relname('calamity.part_test');
289290 validate_relname
@@ -471,7 +472,7 @@ SELECT generate_range_bounds('1-jan-2017'::DATE,
471472SELECT check_range_available(NULL, NULL::INT4, NULL); /* not ok */
472473ERROR: 'parent_relid' should not be NULL
473474SELECT check_range_available('pg_class', 1, 10); /* OK (not partitioned) */
474- WARNING: relation "pg_class" is not partitioned
475+ WARNING: table "pg_class" is not partitioned
475476 check_range_available
476477-----------------------
477478
@@ -553,9 +554,9 @@ SELECT add_to_pathman_config(NULL, 'val'); /* no table */
553554ERROR: 'parent_relid' should not be NULL
554555SELECT add_to_pathman_config(0::REGCLASS, 'val'); /* no table (oid) */
555556ERROR: relation "0" does not exist
556- SELECT add_to_pathman_config('calamity.part_test', NULL); /* no column */
557+ SELECT add_to_pathman_config('calamity.part_test', NULL); /* no expr */
557558ERROR: 'expression' should not be NULL
558- SELECT add_to_pathman_config('calamity.part_test', 'V_A_L'); /* wrong column */
559+ SELECT add_to_pathman_config('calamity.part_test', 'V_A_L'); /* wrong expr */
559560ERROR: cannot find type name for attribute "v_a_l" of relation "part_test"
560561SELECT add_to_pathman_config('calamity.part_test', 'val'); /* OK */
561562 add_to_pathman_config
@@ -702,7 +703,6 @@ SELECT count(*) FROM pathman_config_params WHERE partrel = 'calamity.to_be_disab
702703/* check function get_part_range_by_idx() */
703704CREATE TABLE calamity.test_range_idx(val INT4 NOT NULL);
704705SELECT create_range_partitions('calamity.test_range_idx', 'val', 1, 10, 1);
705- NOTICE: sequence "test_range_idx_seq" does not exist, skipping
706706 create_range_partitions
707707-------------------------
708708 1
@@ -725,11 +725,10 @@ SELECT get_part_range('calamity.test_range_idx', 0, NULL::INT4); /* OK */
725725(1 row)
726726
727727DROP TABLE calamity.test_range_idx CASCADE;
728- NOTICE: drop cascades to table calamity.test_range_idx_1
728+ NOTICE: drop cascades to 2 other objects
729729/* check function get_part_range_by_oid() */
730730CREATE TABLE calamity.test_range_oid(val INT4 NOT NULL);
731731SELECT create_range_partitions('calamity.test_range_oid', 'val', 1, 10, 1);
732- NOTICE: sequence "test_range_oid_seq" does not exist, skipping
733732 create_range_partitions
734733-------------------------
735734 1
@@ -748,9 +747,79 @@ SELECT get_part_range('calamity.test_range_oid_1', NULL::INT4); /* OK */
748747(1 row)
749748
750749DROP TABLE calamity.test_range_oid CASCADE;
751- NOTICE: drop cascades to table calamity.test_range_oid_1
750+ NOTICE: drop cascades to 2 other objects
751+ /* check function merge_range_partitions() */
752+ SELECT merge_range_partitions('{pg_class}'); /* not ok */
753+ ERROR: cannot merge partitions
754+ SELECT merge_range_partitions('{pg_class, pg_inherits}'); /* not ok */
755+ ERROR: cannot merge partitions
756+ CREATE TABLE calamity.merge_test_a(val INT4 NOT NULL);
757+ CREATE TABLE calamity.merge_test_b(val INT4 NOT NULL);
758+ SELECT create_range_partitions('calamity.merge_test_a', 'val', 1, 10, 2);
759+ create_range_partitions
760+ -------------------------
761+ 2
762+ (1 row)
763+
764+ SELECT create_range_partitions('calamity.merge_test_b', 'val', 1, 10, 2);
765+ create_range_partitions
766+ -------------------------
767+ 2
768+ (1 row)
769+
770+ SELECT merge_range_partitions('{calamity.merge_test_a_1,
771+ calamity.merge_test_b_1}'); /* not ok */
772+ ERROR: cannot merge partitions
773+ DROP TABLE calamity.merge_test_a,calamity.merge_test_b CASCADE;
774+ NOTICE: drop cascades to 6 other objects
775+ /* check function drop_triggers() */
776+ CREATE TABLE calamity.trig_test_tbl(val INT4 NOT NULL);
777+ SELECT create_hash_partitions('calamity.trig_test_tbl', 'val', 2);
778+ create_hash_partitions
779+ ------------------------
780+ 2
781+ (1 row)
782+
783+ SELECT create_update_triggers('calamity.trig_test_tbl');
784+ create_update_triggers
785+ ------------------------
786+
787+ (1 row)
788+
789+ SELECT count(*) FROM pg_trigger WHERE tgrelid = 'calamity.trig_test_tbl'::REGCLASS;
790+ count
791+ -------
792+ 1
793+ (1 row)
794+
795+ SELECT count(*) FROM pg_trigger WHERE tgrelid = 'calamity.trig_test_tbl_1'::REGCLASS;
796+ count
797+ -------
798+ 1
799+ (1 row)
800+
801+ SELECT drop_triggers('calamity.trig_test_tbl'); /* OK */
802+ drop_triggers
803+ ---------------
804+
805+ (1 row)
806+
807+ SELECT count(*) FROM pg_trigger WHERE tgrelid = 'calamity.trig_test_tbl'::REGCLASS;
808+ count
809+ -------
810+ 0
811+ (1 row)
812+
813+ SELECT count(*) FROM pg_trigger WHERE tgrelid = 'calamity.trig_test_tbl_1'::REGCLASS;
814+ count
815+ -------
816+ 0
817+ (1 row)
818+
819+ DROP TABLE calamity.trig_test_tbl CASCADE;
820+ NOTICE: drop cascades to 2 other objects
752821DROP SCHEMA calamity CASCADE;
753- NOTICE: drop cascades to 18 other objects
822+ NOTICE: drop cascades to 15 other objects
754823DROP EXTENSION pg_pathman;
755824/*
756825 * -------------------------------------
@@ -764,7 +833,6 @@ SET pg_pathman.enable_bounds_cache = false;
764833/* check view pathman_cache_stats */
765834CREATE TABLE calamity.test_pathman_cache_stats(val NUMERIC NOT NULL);
766835SELECT create_range_partitions('calamity.test_pathman_cache_stats', 'val', 1, 10, 10);
767- NOTICE: sequence "test_pathman_cache_stats_seq" does not exist, skipping
768836 create_range_partitions
769837-------------------------
770838 10
@@ -851,7 +919,6 @@ SELECT context, entries FROM pathman_cache_stats ORDER BY context; /* OK */
851919
852920DROP TABLE calamity.test_pathman_cache_stats;
853921DROP SCHEMA calamity CASCADE;
854- NOTICE: drop cascades to sequence calamity.test_pathman_cache_stats_seq
855922DROP EXTENSION pg_pathman;
856923/*
857924 * ------------------------------------------
@@ -863,7 +930,6 @@ CREATE EXTENSION pg_pathman;
863930/* check function pathman_cache_search_relid() */
864931CREATE TABLE calamity.survivor(val INT NOT NULL);
865932SELECT create_range_partitions('calamity.survivor', 'val', 1, 10, 2);
866- NOTICE: sequence "survivor_seq" does not exist, skipping
867933 create_range_partitions
868934-------------------------
869935 2
@@ -903,10 +969,10 @@ SELECT add_to_pathman_config('calamity.survivor', 'val', '10'); /* OK */
903969(1 row)
904970
905971SELECT * FROM pathman_partition_list; /* OK */
906- parent | partition | parttype | partattr | range_min | range_max
907- -------------------+---------------------+----------+---------- +-----------+-----------
908- calamity.survivor | calamity.survivor_1 | 2 | val | 1 | 11
909- calamity.survivor | calamity.survivor_2 | 2 | val | 11 | 21
972+ parent | partition | parttype | expr | range_min | range_max
973+ -------------------+---------------------+----------+------+-----------+-----------
974+ calamity.survivor | calamity.survivor_1 | 2 | val | 1 | 11
975+ calamity.survivor | calamity.survivor_2 | 2 | val | 11 | 21
910976(2 rows)
911977
912978SELECT get_part_range('calamity.survivor', 0, NULL::INT); /* OK */
@@ -924,7 +990,6 @@ EXPLAIN (COSTS OFF) SELECT * FROM calamity.survivor; /* OK */
924990(3 rows)
925991
926992DROP TABLE calamity.survivor CASCADE;
927- NOTICE: drop cascades to 2 other objects
993+ NOTICE: drop cascades to 3 other objects
928994DROP SCHEMA calamity CASCADE;
929- NOTICE: drop cascades to sequence calamity.survivor_seq
930995DROP EXTENSION pg_pathman;
0 commit comments