bugfix of drop trigger if exists with schema
This commit is contained in:
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
Reference in New Issue
Block a user