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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy