File tree 3 files changed +74
-10
lines changed
3 files changed +74
-10
lines changed Original file line number Diff line number Diff line change @@ -777,6 +777,52 @@ SELECT merge_range_partitions('{calamity.merge_test_a_1,
777
777
ERROR: cannot merge partitions
778
778
DROP TABLE calamity.merge_test_a,calamity.merge_test_b CASCADE;
779
779
NOTICE: drop cascades to 4 other objects
780
+ /* check function drop_triggers() */
781
+ CREATE TABLE calamity.trig_test_tbl(val INT4 NOT NULL);
782
+ SELECT create_hash_partitions('calamity.trig_test_tbl', 'val', 2);
783
+ create_hash_partitions
784
+ ------------------------
785
+ 2
786
+ (1 row)
787
+
788
+ SELECT create_update_triggers('calamity.trig_test_tbl');
789
+ create_update_triggers
790
+ ------------------------
791
+
792
+ (1 row)
793
+
794
+ SELECT count(*) FROM pg_trigger WHERE tgrelid = 'calamity.trig_test_tbl'::REGCLASS;
795
+ count
796
+ -------
797
+ 1
798
+ (1 row)
799
+
800
+ SELECT count(*) FROM pg_trigger WHERE tgrelid = 'calamity.trig_test_tbl_1'::REGCLASS;
801
+ count
802
+ -------
803
+ 1
804
+ (1 row)
805
+
806
+ SELECT drop_triggers('calamity.trig_test_tbl'); /* OK */
807
+ drop_triggers
808
+ ---------------
809
+
810
+ (1 row)
811
+
812
+ SELECT count(*) FROM pg_trigger WHERE tgrelid = 'calamity.trig_test_tbl'::REGCLASS;
813
+ count
814
+ -------
815
+ 0
816
+ (1 row)
817
+
818
+ SELECT count(*) FROM pg_trigger WHERE tgrelid = 'calamity.trig_test_tbl_1'::REGCLASS;
819
+ count
820
+ -------
821
+ 0
822
+ (1 row)
823
+
824
+ DROP TABLE calamity.trig_test_tbl CASCADE;
825
+ NOTICE: drop cascades to 2 other objects
780
826
DROP SCHEMA calamity CASCADE;
781
827
NOTICE: drop cascades to 20 other objects
782
828
DROP EXTENSION pg_pathman;
Original file line number Diff line number Diff line change @@ -447,7 +447,7 @@ CREATE OR REPLACE FUNCTION @extschema@.prepare_for_partitioning(
447
447
RETURNS VOID AS
448
448
$$
449
449
DECLARE
450
- constr_name TEXT ;
450
+ constr_name TEXT ;
451
451
is_referenced BOOLEAN ;
452
452
rel_persistence CHAR ;
453
453
@@ -516,9 +516,10 @@ CREATE OR REPLACE FUNCTION @extschema@.pathman_ddl_trigger_func()
516
516
RETURNS event_trigger AS
517
517
$$
518
518
DECLARE
519
- obj record;
520
- pg_class_oid oid ;
521
- relids regclass[];
519
+ obj RECORD;
520
+ pg_class_oid OID ;
521
+ relids REGCLASS[];
522
+
522
523
BEGIN
523
524
pg_class_oid = ' pg_catalog.pg_class' ::regclass;
524
525
@@ -545,20 +546,21 @@ CREATE OR REPLACE FUNCTION @extschema@.drop_triggers(
545
546
RETURNS VOID AS
546
547
$$
547
548
DECLARE
548
- triggername TEXT ;
549
- rec RECORD ;
549
+ triggername TEXT ;
550
+ relation OID ;
550
551
551
552
BEGIN
552
553
triggername := @extschema@.build_update_trigger_name(parent_relid);
553
554
554
555
/* Drop trigger for each partition if exists */
555
- FOR rec IN (SELECT pg_catalog .pg_inherits .* FROM pg_catalog .pg_inherits
556
- JOIN pg_catalog .pg_trigger ON inhrelid = tgrelid
557
- WHERE inhparent = parent_relid AND tgname = triggername)
556
+ FOR relation IN (SELECT pg_catalog .pg_inherits .inhrelid
557
+ FROM pg_catalog .pg_inherits
558
+ JOIN pg_catalog .pg_trigger ON inhrelid = tgrelid
559
+ WHERE inhparent = parent_relid AND tgname = triggername)
558
560
LOOP
559
561
EXECUTE format(' DROP TRIGGER IF EXISTS %s ON %s' ,
560
562
triggername,
561
- rec . inhrelid ::REGCLASS:: TEXT );
563
+ relation ::REGCLASS);
562
564
END LOOP;
563
565
564
566
/* Drop trigger on parent */
Original file line number Diff line number Diff line change @@ -333,6 +333,22 @@ SELECT merge_range_partitions('{calamity.merge_test_a_1,
333
333
DROP TABLE calamity .merge_test_a ,calamity .merge_test_b CASCADE;
334
334
335
335
336
+ /* check function drop_triggers() */
337
+ CREATE TABLE calamity .trig_test_tbl(val INT4 NOT NULL );
338
+ SELECT create_hash_partitions(' calamity.trig_test_tbl' , ' val' , 2 );
339
+ SELECT create_update_triggers(' calamity.trig_test_tbl' );
340
+
341
+ SELECT count (* ) FROM pg_trigger WHERE tgrelid = ' calamity.trig_test_tbl' ::REGCLASS;
342
+ SELECT count (* ) FROM pg_trigger WHERE tgrelid = ' calamity.trig_test_tbl_1' ::REGCLASS;
343
+
344
+ SELECT drop_triggers(' calamity.trig_test_tbl' ); /* OK */
345
+
346
+ SELECT count (* ) FROM pg_trigger WHERE tgrelid = ' calamity.trig_test_tbl' ::REGCLASS;
347
+ SELECT count (* ) FROM pg_trigger WHERE tgrelid = ' calamity.trig_test_tbl_1' ::REGCLASS;
348
+
349
+ DROP TABLE calamity .trig_test_tbl CASCADE;
350
+
351
+
336
352
DROP SCHEMA calamity CASCADE;
337
353
DROP EXTENSION pg_pathman;
338
354
You can’t perform that action at this time.
0 commit comments