diff --git a/src/common/backend/nodes/copyfuncs.cpp b/src/common/backend/nodes/copyfuncs.cpp index ba5885a52..e2971a39c 100644 --- a/src/common/backend/nodes/copyfuncs.cpp +++ b/src/common/backend/nodes/copyfuncs.cpp @@ -6271,6 +6271,8 @@ static CreateTrigStmt* _copyCreateTrigStmt(const CreateTrigStmt* from) COPY_SCALAR_FIELD(if_not_exists); COPY_STRING_FIELD(trgordername); COPY_SCALAR_FIELD(is_follows); + COPY_STRING_FIELD(schemaname); + return newnode; } diff --git a/src/common/backend/nodes/equalfuncs.cpp b/src/common/backend/nodes/equalfuncs.cpp index 177975717..71c92bfd3 100644 --- a/src/common/backend/nodes/equalfuncs.cpp +++ b/src/common/backend/nodes/equalfuncs.cpp @@ -2280,6 +2280,7 @@ static bool _equalCreateTrigStmt(const CreateTrigStmt* a, const CreateTrigStmt* COMPARE_SCALAR_FIELD(if_not_exists); COMPARE_STRING_FIELD(trgordername); COMPARE_SCALAR_FIELD(is_follows); + COMPARE_STRING_FIELD(schemaname); return true; } diff --git a/src/gausskernel/optimizer/commands/trigger.cpp b/src/gausskernel/optimizer/commands/trigger.cpp index 16d7200e0..25b9795ea 100644 --- a/src/gausskernel/optimizer/commands/trigger.cpp +++ b/src/gausskernel/optimizer/commands/trigger.cpp @@ -1454,9 +1454,10 @@ ObjectAddress renametrig(RenameStmt* stmt) /* Have lock already, so just need to build relcache entry. */ targetrel = relation_open(relid, NoLock); - if (PointerIsValid(stmt->renameTargetList) && PointerIsValid(stmt->renameTargetList->head)) { + if (u_sess->attr.attr_sql.sql_compatibility == B_FORMAT && + PointerIsValid(stmt->renameTargetList) && PointerIsValid(stmt->renameTargetList->head)) { RangeVar* trigname = (RangeVar*)lfirst(list_head(stmt->renameTargetList)); - if (u_sess->attr.attr_sql.sql_compatibility == B_FORMAT && trigname->schemaname != NULL) { + if (trigname->schemaname != NULL) { Oid relNamespaceId = RelationGetNamespace(targetrel); if (relNamespaceId != get_namespace_oid(trigname->schemaname, false)) { ereport(ERROR, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), diff --git a/src/test/regress/expected/mysql_trigger.out b/src/test/regress/expected/mysql_trigger.out index 8a8580215..70f49d6e7 100644 --- a/src/test/regress/expected/mysql_trigger.out +++ b/src/test/regress/expected/mysql_trigger.out @@ -980,7 +980,7 @@ ERROR: trigger "animals_trigger2_2" for relation "animals_scm" already exists alter trigger testscm_no.animals_trigger2_2 on testscm.animals_scm rename to animals_trigger2_3; ERROR: schema "testscm_no" does not exist drop trigger testscm.animals_trigger2_2 on testscm.animals_scm; --- 1.6 set search_path to schema +-- 1.4 set search_path to schema set search_path to testscm; create trigger animals_trigger2 after insert on animals_scm diff --git a/src/test/regress/sql/mysql_trigger.sql b/src/test/regress/sql/mysql_trigger.sql index ff4a417c6..26afe625b 100644 --- a/src/test/regress/sql/mysql_trigger.sql +++ b/src/test/regress/sql/mysql_trigger.sql @@ -91,7 +91,6 @@ delete from testscm.food_scm; drop trigger animals_trigger3; drop trigger animals_trigger3; select tgname from pg_trigger; - -- 1.1.1.2 trigger with right schema create trigger testscm.animals_trigger2 after insert on testscm.animals_scm @@ -547,7 +546,7 @@ 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 +-- 1.4 set search_path to schema set search_path to testscm; create trigger animals_trigger2 after insert on animals_scm