diff --git a/src/common/backend/catalog/objectaddress.cpp b/src/common/backend/catalog/objectaddress.cpp index ab3c52489..4bd7462d3 100644 --- a/src/common/backend/catalog/objectaddress.cpp +++ b/src/common/backend/catalog/objectaddress.cpp @@ -1336,19 +1336,19 @@ static ObjectAddress get_object_address_relobject(ObjectType objtype, List* objn address.classId = TriggerRelationId; address.objectId = get_trigger_oid(reloid, depname, missing_ok); address.objectSubId = 0; - break; - case OBJECT_TABCONSTRAINT: - address.classId = ConstraintRelationId; - address.objectId = get_relation_constraint_oid(reloid, depname, missing_ok); - address.objectSubId = 0; /* TODO: comments*/ - if (schemaname != NULL) { + if (OidIsValid(address.objectId) && schemaname != NULL) { Oid relNamespaceId = RelationGetNamespace(relation); if (relNamespaceId != get_namespace_oid(schemaname, false)) { ereport(ERROR, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), errmsg("trigger in wrong schema: \"%s\".\"%s\"", schemaname, depname))); } } break; + case OBJECT_TABCONSTRAINT: + address.classId = ConstraintRelationId; + address.objectId = get_relation_constraint_oid(reloid, depname, missing_ok); + address.objectSubId = 0; + break; case OBJECT_RLSPOLICY: address.classId = RlsPolicyRelationId; address.objectId = relation ? get_rlspolicy_oid(reloid, depname, missing_ok) : InvalidOid; diff --git a/src/test/regress/expected/mysql_trigger.out b/src/test/regress/expected/mysql_trigger.out index c20b2dd02..8a8580215 100644 --- a/src/test/regress/expected/mysql_trigger.out +++ b/src/test/regress/expected/mysql_trigger.out @@ -4,6 +4,7 @@ NOTICE: database "testdb_m" does not exist, skipping create database testdb_m dbcompatibility 'B'; \c testdb_m create schema testscm; +create schema testscm2; create table animals (id int, name char(30)); create table food (id int, foodtype varchar(32), remark varchar(32), time_flag timestamp); create table testscm.animals_scm (id int, name char(30)); @@ -287,6 +288,42 @@ begin end; / ERROR: schema "testscm_no" does not exist +create trigger animals_trigger1 +after insert on animals +for each row +begin + insert into food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', now()); +end; +/ +create trigger testscm.animals_trigger2 +after insert on testscm.animals_scm +for each row +begin + insert into food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', now()); +end; +/ +-- ERROR: trigger in wrong schema: "testscm"."animals_trigger1" +drop trigger testscm.animals_trigger1; +ERROR: trigger in wrong schema: "testscm"."animals_trigger1" +-- OK +drop trigger animals_trigger1; +-- ERROR: schema "testscm_no" does not exist +drop trigger testscm_no.animals_trigger2; +ERROR: schema "testscm_no" does not exist +-- OK +drop trigger animals_trigger2; +select tgname from pg_trigger; + tgname +-------- +(0 rows) + +-- ERROR: trigger "animals_trigger_no" does not exist +drop trigger animals_trigger_no; +ERROR: trigger "animals_trigger_no" does not exist +drop trigger testscm.animals_trigger_no; +ERROR: trigger "animals_trigger_no" does not exist +drop trigger testscm_no.animals_trigger_no; +ERROR: trigger "animals_trigger_no" does not exist -- 1.1.1.4 trigger with bad schema create trigger testscm. after insert on testscm.animals_scm @@ -638,6 +675,42 @@ begin end; / ERROR: schema "testscm_no" does not exist +create trigger animals_trigger1 +after insert on animals +for each row +begin + insert into food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', now()); +end; +/ +create trigger testscm.animals_trigger2 +after insert on testscm.animals_scm +for each row +begin + insert into food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', now()); +end; +/ +-- ERROR: trigger in wrong schema: "testscm"."animals_trigger1" +drop trigger if exists testscm.animals_trigger1; +ERROR: trigger in wrong schema: "testscm"."animals_trigger1" +-- OK +drop trigger if exists animals_trigger1; +-- ERROR: schema "testscm_no" does not exist +drop trigger if exists testscm_no.animals_trigger2; +ERROR: schema "testscm_no" does not exist +-- OK +drop trigger if exists animals_trigger2; +select tgname from pg_trigger; + tgname +-------- +(0 rows) + +-- NOTICE: trigger "animals_trigger_no" does not exist, skipping +drop trigger if exists animals_trigger_no; +NOTICE: trigger "animals_trigger_no" does not exist, skipping +drop trigger if exists testscm.animals_trigger_no; +NOTICE: trigger "animals_trigger_no" does not exist, skipping +drop trigger if exists testscm_no.animals_trigger_no; +NOTICE: trigger "animals_trigger_no" does not exist, skipping -- 1.1.3 create trigger execute procedure create trigger animals_trigger1 after insert on animals @@ -718,6 +791,20 @@ select tgname from pg_trigger; animals_trigger1 (1 row) +-- ERROR: trigger in wrong schema: "testscm"."animals_trigger1" +drop trigger testscm.animals_trigger1 on animals; +ERROR: trigger in wrong schema: "testscm"."animals_trigger1" +-- ERROR: schema "testscm_no" does not exist +drop trigger testscm_no.animals_trigger1 on animals; +ERROR: schema "testscm_no" does not exist +-- ERROR: trigger "animals_trigger_no" for table "animals" does not exist +drop trigger animals_trigger_no on animals; +ERROR: trigger "animals_trigger_no" for table "animals" does not exist +drop trigger testscm.animals_trigger_no on animals; +ERROR: trigger "animals_trigger_no" for table "animals" does not exist +drop trigger testscm_no.animals_trigger_no on animals; +ERROR: trigger "animals_trigger_no" for table "animals" does not exist +-- OK drop trigger animals_trigger1 on animals; drop trigger animals_trigger1 on animals; ERROR: trigger "animals_trigger1" for table "animals" does not exist @@ -739,64 +826,100 @@ select tgname from pg_trigger; animals_trigger1 (1 row) -drop trigger if exists animals_trigger1 on animals; -drop trigger if exists animals_trigger1 on animals; -NOTICE: trigger "animals.animals_trigger1" for table "animals" does not exist, skipping -select tgname from pg_trigger; - tgname --------- -(0 rows) - -create trigger testscm.animals_trigger2 -after insert on testscm.animals_scm -for each row -begin - insert into food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', now()); -end; -/ -select tgname from pg_trigger; - tgname ------------------- - animals_trigger2 -(1 row) - -drop trigger testscm.animals_trigger2 on testscm.animals_scm; -drop trigger testscm.animals_trigger2 on testscm.animals_scm; -ERROR: trigger "animals_trigger2" for table "animals_scm" does not exist -select tgname from pg_trigger; - tgname --------- -(0 rows) - -create trigger testscm.animals_trigger2 -after insert on testscm.animals_scm -for each row -begin - insert into food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', now()); -end; -/ -select tgname from pg_trigger; - tgname ------------------- - animals_trigger2 -(1 row) - -drop trigger if exists testscm.animals_trigger2 on testscm.animals_scm; -drop trigger if exists testscm.animals_trigger2 on testscm.animals_scm; -NOTICE: trigger "testscm.animals_scm.animals_trigger2" for table "testscm.animals_scm" does not exist, skipping -select tgname from pg_trigger; - tgname --------- -(0 rows) - -drop trigger testscm.animals_trigger1 on animals; -ERROR: trigger "animals_trigger1" for table "animals" does not exist -drop trigger testscm_no.animals_trigger2 on testscm.animals_scm; -ERROR: trigger "animals_trigger2" for table "animals_scm" does not exist +-- ERROR: trigger in wrong schema: "testscm"."animals_trigger1" drop trigger if exists testscm.animals_trigger1 on animals; +ERROR: trigger in wrong schema: "testscm"."animals_trigger1" +-- ERROR: schema "testscm_no" does not exist +drop trigger if exists testscm_no.animals_trigger1 on animals; +ERROR: schema "testscm_no" does not exist +-- NOTICE: trigger "animals.animals_trigger_no" for table "animals" does not exist, skipping +drop trigger if exists animals_trigger_no on animals; +NOTICE: trigger "animals.animals_trigger_no" for table "animals" does not exist, skipping +drop trigger if exists testscm.animals_trigger_no on animals; +NOTICE: trigger "animals.animals_trigger_no" for table "animals" does not exist, skipping +drop trigger if exists testscm_no.animals_trigger_no on animals; +NOTICE: trigger "animals.animals_trigger_no" for table "animals" does not exist, skipping +-- OK +drop trigger if exists animals_trigger1 on animals; +drop trigger if exists animals_trigger1 on animals; NOTICE: trigger "animals.animals_trigger1" for table "animals" does not exist, skipping +select tgname from pg_trigger; + tgname +-------- +(0 rows) + +create trigger testscm.animals_trigger2 +after insert on testscm.animals_scm +for each row +begin + insert into food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', now()); +end; +/ +select tgname from pg_trigger; + tgname +------------------ + animals_trigger2 +(1 row) + +-- ERROR: trigger in wrong schema: "testscm2"."animals_trigger2" +drop trigger testscm2.animals_trigger2 on testscm.animals_scm; +ERROR: trigger in wrong schema: "testscm2"."animals_trigger2" +-- ERROR: schema "testscm_no" does not exist +drop trigger testscm_no.animals_trigger2 on testscm.animals_scm; +ERROR: schema "testscm_no" does not exist +-- ERROR: trigger "animals_trigger_no" for table "animals_scm" does not exist +drop trigger animals_trigger_no on testscm.animals_scm; +ERROR: trigger "animals_trigger_no" for table "animals_scm" does not exist +drop trigger testscm.animals_trigger_no on testscm.animals_scm; +ERROR: trigger "animals_trigger_no" for table "animals_scm" does not exist +drop trigger testscm_no.animals_trigger_no on testscm.animals_scm; +ERROR: trigger "animals_trigger_no" for table "animals_scm" does not exist +-- OK +drop trigger testscm.animals_trigger2 on testscm.animals_scm; +drop trigger testscm.animals_trigger2 on testscm.animals_scm; +ERROR: trigger "animals_trigger2" for table "animals_scm" does not exist +select tgname from pg_trigger; + tgname +-------- +(0 rows) + +create trigger testscm.animals_trigger2 +after insert on testscm.animals_scm +for each row +begin + insert into food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', now()); +end; +/ +select tgname from pg_trigger; + tgname +------------------ + animals_trigger2 +(1 row) + +-- ERROR: trigger in wrong schema: "testscm2"."animals_trigger2" +drop trigger if exists testscm2.animals_trigger2 on testscm.animals_scm; +ERROR: trigger in wrong schema: "testscm2"."animals_trigger2" +-- ERROR: schema "testscm_no" does not exist drop trigger if exists testscm_no.animals_trigger2 on testscm.animals_scm; +ERROR: schema "testscm_no" does not exist +-- NOTICE: trigger "testscm.animals_scm.animals_trigger_no" for table "testscm.animals_scm" does not exist, skipping +drop trigger if exists animals_trigger_no on testscm.animals_scm; +NOTICE: trigger "testscm.animals_scm.animals_trigger_no" for table "testscm.animals_scm" does not exist, skipping +drop trigger if exists testscm.animals_trigger_no on testscm.animals_scm; +NOTICE: trigger "testscm.animals_scm.animals_trigger_no" for table "testscm.animals_scm" does not exist, skipping +drop trigger if exists testscm2.animals_trigger_no on testscm.animals_scm; +NOTICE: trigger "testscm.animals_scm.animals_trigger_no" for table "testscm.animals_scm" does not exist, skipping +drop trigger if exists testscm_no.animals_trigger_no on testscm.animals_scm; +NOTICE: trigger "testscm.animals_scm.animals_trigger_no" for table "testscm.animals_scm" does not exist, skipping +-- OK +drop trigger if exists testscm.animals_trigger2 on testscm.animals_scm; +drop trigger if exists testscm.animals_trigger2 on testscm.animals_scm; NOTICE: trigger "testscm.animals_scm.animals_trigger2" for table "testscm.animals_scm" does not exist, skipping +select tgname from pg_trigger; + tgname +-------- +(0 rows) + -- 1.3 alter trigger create trigger animals_trigger1 after insert on animals diff --git a/src/test/regress/sql/mysql_trigger.sql b/src/test/regress/sql/mysql_trigger.sql index 27a67433b..ff4a417c6 100644 --- a/src/test/regress/sql/mysql_trigger.sql +++ b/src/test/regress/sql/mysql_trigger.sql @@ -2,15 +2,12 @@ drop database if exists testdb_m; create database testdb_m dbcompatibility 'B'; \c testdb_m - create schema testscm; - +create schema testscm2; create table animals (id int, name char(30)); create table food (id int, foodtype varchar(32), remark varchar(32), time_flag timestamp); - create table testscm.animals_scm (id int, name char(30)); create table testscm.food_scm (id int, foodtype varchar(32), remark varchar(32), time_flag timestamp); - CREATE OR REPLACE FUNCTION food_insert_func() RETURNS TRIGGER AS $$ DECLARE @@ -19,7 +16,6 @@ INSERT INTO food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', RETURN NEW; END $$ LANGUAGE PLPGSQL; - -- 1.1 create trigger -- 1.1.1 create trigger + drop trigger -- 1.1.1.1 trigger without schema @@ -47,7 +43,6 @@ delete from food; drop trigger animals_trigger1; drop trigger animals_trigger1; select tgname from pg_trigger; - create trigger animals_trigger2 after insert on testscm.animals_scm for each row @@ -72,7 +67,6 @@ delete from food; drop trigger animals_trigger2; drop trigger animals_trigger2; select tgname from pg_trigger; - create trigger animals_trigger3 after insert on testscm.animals_scm for each row @@ -123,7 +117,6 @@ delete from food; drop trigger testscm.animals_trigger2; drop trigger testscm.animals_trigger2; select tgname from pg_trigger; - create trigger testscm.animals_trigger3 after insert on testscm.animals_scm for each row @@ -148,7 +141,6 @@ delete from testscm.food_scm; drop trigger testscm.animals_trigger3; drop trigger testscm.animals_trigger3; select tgname from pg_trigger; - -- 1.1.1.3 trigger with wrong schema create trigger testscm.animals_trigger1 after insert on animals @@ -164,7 +156,33 @@ begin insert into food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', now()); end; / - +create trigger animals_trigger1 +after insert on animals +for each row +begin + insert into food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', now()); +end; +/ +create trigger testscm.animals_trigger2 +after insert on testscm.animals_scm +for each row +begin + insert into food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', now()); +end; +/ +-- ERROR: trigger in wrong schema: "testscm"."animals_trigger1" +drop trigger testscm.animals_trigger1; +-- OK +drop trigger animals_trigger1; +-- ERROR: schema "testscm_no" does not exist +drop trigger testscm_no.animals_trigger2; +-- OK +drop trigger animals_trigger2; +select tgname from pg_trigger; +-- ERROR: trigger "animals_trigger_no" does not exist +drop trigger animals_trigger_no; +drop trigger testscm.animals_trigger_no; +drop trigger testscm_no.animals_trigger_no; -- 1.1.1.4 trigger with bad schema create trigger testscm. after insert on testscm.animals_scm @@ -222,7 +240,6 @@ begin insert into food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', now()); end; / - -- 1.1.2 create trigger if not exists + drop trigger if exists -- 1.1.2.1 trigger without schema create trigger if not exists animals_trigger1 @@ -249,7 +266,6 @@ delete from food; drop trigger if exists animals_trigger1; drop trigger if exists animals_trigger1; select tgname from pg_trigger; - create trigger if not exists animals_trigger2 after insert on testscm.animals_scm for each row @@ -274,7 +290,6 @@ delete from food; drop trigger if exists animals_trigger2; drop trigger if exists animals_trigger2; select tgname from pg_trigger; - create trigger if not exists animals_trigger3 after insert on testscm.animals_scm for each row @@ -299,7 +314,6 @@ delete from testscm.food_scm; drop trigger if exists animals_trigger3; drop trigger if exists animals_trigger3; select tgname from pg_trigger; - -- 1.1.2.2 trigger with right schema create trigger if not exists testscm.animals_trigger2 after insert on testscm.animals_scm @@ -325,7 +339,6 @@ delete from food; drop trigger if exists testscm.animals_trigger2; drop trigger if exists testscm.animals_trigger2; select tgname from pg_trigger; - create trigger if not exists testscm.animals_trigger3 after insert on testscm.animals_scm for each row @@ -350,7 +363,6 @@ delete from testscm.food_scm; drop trigger if exists testscm.animals_trigger3; drop trigger if exists testscm.animals_trigger3; select tgname from pg_trigger; - -- 1.1.2.3 trigger with wrong schema create trigger if not exists testscm.animals_trigger1 after insert on animals @@ -366,7 +378,33 @@ begin insert into food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', now()); end; / - +create trigger animals_trigger1 +after insert on animals +for each row +begin + insert into food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', now()); +end; +/ +create trigger testscm.animals_trigger2 +after insert on testscm.animals_scm +for each row +begin + insert into food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', now()); +end; +/ +-- ERROR: trigger in wrong schema: "testscm"."animals_trigger1" +drop trigger if exists testscm.animals_trigger1; +-- OK +drop trigger if exists animals_trigger1; +-- ERROR: schema "testscm_no" does not exist +drop trigger if exists testscm_no.animals_trigger2; +-- OK +drop trigger if exists animals_trigger2; +select tgname from pg_trigger; +-- NOTICE: trigger "animals_trigger_no" does not exist, skipping +drop trigger if exists animals_trigger_no; +drop trigger if exists testscm.animals_trigger_no; +drop trigger if exists testscm_no.animals_trigger_no; -- 1.1.3 create trigger execute procedure create trigger animals_trigger1 after insert on animals @@ -375,7 +413,6 @@ execute procedure food_insert_func(); select tgname from pg_trigger; drop trigger animals_trigger1; select tgname from pg_trigger; - create trigger testscm.animals_trigger2 after insert on testscm.animals_scm for each row @@ -383,7 +420,6 @@ execute procedure food_insert_func(); select tgname from pg_trigger; drop trigger testscm.animals_trigger2; select tgname from pg_trigger; - -- 1.1.4 create constrain trigger execute procedure create constraint trigger animals_trigger1 after insert on animals @@ -392,7 +428,6 @@ execute procedure food_insert_func(); select tgname from pg_trigger; drop trigger animals_trigger1; select tgname from pg_trigger; - create constraint trigger testscm.animals_trigger2 after insert on testscm.animals_scm for each row @@ -400,7 +435,6 @@ execute procedure food_insert_func(); select tgname from pg_trigger; drop trigger testscm.animals_trigger2; select tgname from pg_trigger; - -- 1.2 drop trigger on table create trigger animals_trigger1 after insert on animals @@ -410,10 +444,18 @@ begin end; / select tgname from pg_trigger; +-- ERROR: trigger in wrong schema: "testscm"."animals_trigger1" +drop trigger testscm.animals_trigger1 on animals; +-- ERROR: schema "testscm_no" does not exist +drop trigger testscm_no.animals_trigger1 on animals; +-- ERROR: trigger "animals_trigger_no" for table "animals" does not exist +drop trigger animals_trigger_no on animals; +drop trigger testscm.animals_trigger_no on animals; +drop trigger testscm_no.animals_trigger_no on animals; +-- OK drop trigger animals_trigger1 on animals; drop trigger animals_trigger1 on animals; select tgname from pg_trigger; - create trigger animals_trigger1 after insert on animals for each row @@ -422,39 +464,59 @@ begin end; / select tgname from pg_trigger; -drop trigger if exists animals_trigger1 on animals; -drop trigger if exists animals_trigger1 on animals; -select tgname from pg_trigger; - -create trigger testscm.animals_trigger2 -after insert on testscm.animals_scm -for each row -begin - insert into food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', now()); -end; -/ -select tgname from pg_trigger; -drop trigger testscm.animals_trigger2 on testscm.animals_scm; -drop trigger testscm.animals_trigger2 on testscm.animals_scm; -select tgname from pg_trigger; - -create trigger testscm.animals_trigger2 -after insert on testscm.animals_scm -for each row -begin - insert into food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', now()); -end; -/ -select tgname from pg_trigger; -drop trigger if exists testscm.animals_trigger2 on testscm.animals_scm; -drop trigger if exists testscm.animals_trigger2 on testscm.animals_scm; -select tgname from pg_trigger; - -drop trigger testscm.animals_trigger1 on animals; -drop trigger testscm_no.animals_trigger2 on testscm.animals_scm; +-- ERROR: trigger in wrong schema: "testscm"."animals_trigger1" drop trigger if exists testscm.animals_trigger1 on animals; +-- ERROR: schema "testscm_no" does not exist +drop trigger if exists testscm_no.animals_trigger1 on animals; +-- NOTICE: trigger "animals.animals_trigger_no" for table "animals" does not exist, skipping +drop trigger if exists animals_trigger_no on animals; +drop trigger if exists testscm.animals_trigger_no on animals; +drop trigger if exists testscm_no.animals_trigger_no on animals; +-- OK +drop trigger if exists animals_trigger1 on animals; +drop trigger if exists animals_trigger1 on animals; +select tgname from pg_trigger; +create trigger testscm.animals_trigger2 +after insert on testscm.animals_scm +for each row +begin + insert into food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', now()); +end; +/ +select tgname from pg_trigger; +-- ERROR: trigger in wrong schema: "testscm2"."animals_trigger2" +drop trigger testscm2.animals_trigger2 on testscm.animals_scm; +-- ERROR: schema "testscm_no" does not exist +drop trigger testscm_no.animals_trigger2 on testscm.animals_scm; +-- ERROR: trigger "animals_trigger_no" for table "animals_scm" does not exist +drop trigger animals_trigger_no on testscm.animals_scm; +drop trigger testscm.animals_trigger_no on testscm.animals_scm; +drop trigger testscm_no.animals_trigger_no on testscm.animals_scm; +-- OK +drop trigger testscm.animals_trigger2 on testscm.animals_scm; +drop trigger testscm.animals_trigger2 on testscm.animals_scm; +select tgname from pg_trigger; +create trigger testscm.animals_trigger2 +after insert on testscm.animals_scm +for each row +begin + insert into food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', now()); +end; +/ +select tgname from pg_trigger; +-- ERROR: trigger in wrong schema: "testscm2"."animals_trigger2" +drop trigger if exists testscm2.animals_trigger2 on testscm.animals_scm; +-- ERROR: schema "testscm_no" does not exist drop trigger if exists testscm_no.animals_trigger2 on testscm.animals_scm; - +-- NOTICE: trigger "testscm.animals_scm.animals_trigger_no" for table "testscm.animals_scm" does not exist, skipping +drop trigger if exists animals_trigger_no on testscm.animals_scm; +drop trigger if exists testscm.animals_trigger_no on testscm.animals_scm; +drop trigger if exists testscm2.animals_trigger_no on testscm.animals_scm; +drop trigger if exists testscm_no.animals_trigger_no on testscm.animals_scm; +-- OK +drop trigger if exists testscm.animals_trigger2 on testscm.animals_scm; +drop trigger if exists testscm.animals_trigger2 on testscm.animals_scm; +select tgname from pg_trigger; -- 1.3 alter trigger create trigger animals_trigger1 after insert on animals @@ -470,7 +532,6 @@ alter trigger testscm.animals_trigger1 on animals rename to animals_trigger1_2; alter trigger testscm.animals_trigger1_1 on animals rename to animals_trigger1_2; alter trigger testscm_no.animals_trigger1_1 on animals rename to animals_trigger1_2; drop trigger animals_trigger1_1 on animals; - create trigger testscm.animals_trigger2 after insert on testscm.animals_scm for each row @@ -486,10 +547,8 @@ select tgname from pg_trigger; alter trigger testscm.animals_trigger2_1 on testscm.animals_scm rename to animals_trigger2_2; alter trigger testscm_no.animals_trigger2_2 on testscm.animals_scm rename to animals_trigger2_3; drop trigger testscm.animals_trigger2_2 on testscm.animals_scm; - -- 1.6 set search_path to schema set search_path to testscm; - create trigger animals_trigger2 after insert on animals_scm for each row @@ -499,7 +558,6 @@ end; / alter trigger animals_trigger2 on animals_scm rename to animals_trigger2_1; drop trigger animals_trigger2_1 on animals_scm; - create trigger testscm.animals_trigger2 after insert on animals_scm for each row @@ -509,26 +567,19 @@ end; / alter trigger testscm.animals_trigger2 on animals_scm rename to animals_trigger2_1; drop trigger testscm.animals_trigger2_1 on animals_scm; - set search_path to public; - -- 1.5 cleanup \c regression drop database testdb_m; - -- 2. test non B_FORMAT trigger drop database if exists testdb; create database testdb; \c testdb - create schema testscm; - create table animals (id int, name char(30)); create table food (id int, foodtype varchar(32), remark varchar(32), time_flag timestamp); - create table testscm.animals_scm (id int, name char(30)); create table testscm.food_scm (id int, foodtype varchar(32), remark varchar(32), time_flag timestamp); - CREATE OR REPLACE FUNCTION food_insert_func() RETURNS TRIGGER AS $$ DECLARE @@ -537,7 +588,6 @@ INSERT INTO food(id, foodtype, remark, time_flag) values (1,'bamboo', 'healthy', RETURN NEW; END $$ LANGUAGE PLPGSQL; - -- 2.1 create trigger + alter trigger + drop trigger create trigger animals_trigger1 after insert on animals @@ -549,7 +599,6 @@ select tgname from pg_trigger; drop trigger animals_trigger1_1; drop trigger animals_trigger1_1 on animals; select tgname from pg_trigger; - create trigger animals_trigger2 after insert on testscm.animals_scm for each row @@ -560,21 +609,18 @@ select tgname from pg_trigger; drop trigger animals_trigger2_1; drop trigger animals_trigger2_1 on testscm.animals_scm; select tgname from pg_trigger; - create trigger testscm.animals_trigger2 after insert on testscm.animals_scm for each row execute procedure food_insert_func(); alter trigger testscm.animals_trigger2 on testscm.animals_scm rename to animals_trigger2_1; drop trigger testscm.animals_trigger2; - create trigger testscm_no.animals_trigger2 after insert on testscm.animals_scm for each row execute procedure food_insert_func(); alter trigger testscm_no.animals_trigger2 on testscm.animals_scm rename to animals_trigger2_1; drop trigger testscm_no.animals_trigger2; - -- 2.2 cleanup \c regression drop database testdb; \ No newline at end of file