Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit bf25102

Browse files
committed
refactoring, add test for drop_triggers()
1 parent 0ae222a commit bf25102

File tree

3 files changed

+74
-10
lines changed

3 files changed

+74
-10
lines changed

expected/pathman_calamity.out

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -777,6 +777,52 @@ SELECT merge_range_partitions('{calamity.merge_test_a_1,
777777
ERROR: cannot merge partitions
778778
DROP TABLE calamity.merge_test_a,calamity.merge_test_b CASCADE;
779779
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
780826
DROP SCHEMA calamity CASCADE;
781827
NOTICE: drop cascades to 20 other objects
782828
DROP EXTENSION pg_pathman;

init.sql

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ CREATE OR REPLACE FUNCTION @extschema@.prepare_for_partitioning(
447447
RETURNS VOID AS
448448
$$
449449
DECLARE
450-
constr_name TEXT;
450+
constr_name TEXT;
451451
is_referenced BOOLEAN;
452452
rel_persistence CHAR;
453453

@@ -516,9 +516,10 @@ CREATE OR REPLACE FUNCTION @extschema@.pathman_ddl_trigger_func()
516516
RETURNS event_trigger AS
517517
$$
518518
DECLARE
519-
obj record;
520-
pg_class_oid oid;
521-
relids regclass[];
519+
obj RECORD;
520+
pg_class_oid OID;
521+
relids REGCLASS[];
522+
522523
BEGIN
523524
pg_class_oid = 'pg_catalog.pg_class'::regclass;
524525

@@ -545,20 +546,21 @@ CREATE OR REPLACE FUNCTION @extschema@.drop_triggers(
545546
RETURNS VOID AS
546547
$$
547548
DECLARE
548-
triggername TEXT;
549-
rec RECORD;
549+
triggername TEXT;
550+
relation OID;
550551

551552
BEGIN
552553
triggername := @extschema@.build_update_trigger_name(parent_relid);
553554

554555
/* 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)
558560
LOOP
559561
EXECUTE format('DROP TRIGGER IF EXISTS %s ON %s',
560562
triggername,
561-
rec.inhrelid::REGCLASS::TEXT);
563+
relation::REGCLASS);
562564
END LOOP;
563565

564566
/* Drop trigger on parent */

sql/pathman_calamity.sql

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,22 @@ SELECT merge_range_partitions('{calamity.merge_test_a_1,
333333
DROP TABLE calamity.merge_test_a,calamity.merge_test_b CASCADE;
334334

335335

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+
336352
DROP SCHEMA calamity CASCADE;
337353
DROP EXTENSION pg_pathman;
338354

0 commit comments

Comments
 (0)