Loading mysql-test/r/trigger.result +12 −0 Original line number Diff line number Diff line Loading @@ -1078,3 +1078,15 @@ i1 43 51 DROP TABLE t1; create trigger wont_work after update on mysql.user for each row begin set @a:= 1; end| ERROR HY000: Triggers can not be created on system tables use mysql| create trigger wont_work after update on event for each row begin set @a:= 1; end| ERROR HY000: Triggers can not be created on system tables End of 5.0 tests mysql-test/t/trigger.test +23 −1 Original line number Diff line number Diff line Loading @@ -1281,4 +1281,26 @@ SELECT * FROM t1; DROP TABLE t1; # End of 5.0 tests # # Bug #18005: Creating a trigger on mysql.event leads to server crash on # scheduler startup # # Bug #18361: Triggers on mysql.user table cause server crash # # We don't allow triggers on the mysql schema delimiter |; --error ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA create trigger wont_work after update on mysql.user for each row begin set @a:= 1; end| # Try when we're already using the mysql schema use mysql| --error ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA create trigger wont_work after update on event for each row begin set @a:= 1; end| delimiter ;| --echo End of 5.0 tests sql/share/errmsg.txt +2 −0 Original line number Diff line number Diff line Loading @@ -5619,3 +5619,5 @@ ER_NON_GROUPING_FIELD_USED 42000 eng "non-grouping field '%-.64s' is used in %-.64s clause" ER_TABLE_CANT_HANDLE_SPKEYS eng "The used table type doesn't support SPATIAL indexes" ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA eng "Triggers can not be created on system tables" sql/sql_trigger.cc +9 −0 Original line number Diff line number Diff line Loading @@ -183,6 +183,15 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create) !(tables= add_table_for_trigger(thd, thd->lex->spname))) DBUG_RETURN(TRUE); /* We don't allow creating triggers on tables in the 'mysql' schema */ if (create && !my_strcasecmp(system_charset_info, "mysql", tables->db)) { my_error(ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA, MYF(0)); DBUG_RETURN(TRUE); } /* We should have only one table in table list. */ DBUG_ASSERT(tables->next_global == 0); Loading Loading
mysql-test/r/trigger.result +12 −0 Original line number Diff line number Diff line Loading @@ -1078,3 +1078,15 @@ i1 43 51 DROP TABLE t1; create trigger wont_work after update on mysql.user for each row begin set @a:= 1; end| ERROR HY000: Triggers can not be created on system tables use mysql| create trigger wont_work after update on event for each row begin set @a:= 1; end| ERROR HY000: Triggers can not be created on system tables End of 5.0 tests
mysql-test/t/trigger.test +23 −1 Original line number Diff line number Diff line Loading @@ -1281,4 +1281,26 @@ SELECT * FROM t1; DROP TABLE t1; # End of 5.0 tests # # Bug #18005: Creating a trigger on mysql.event leads to server crash on # scheduler startup # # Bug #18361: Triggers on mysql.user table cause server crash # # We don't allow triggers on the mysql schema delimiter |; --error ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA create trigger wont_work after update on mysql.user for each row begin set @a:= 1; end| # Try when we're already using the mysql schema use mysql| --error ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA create trigger wont_work after update on event for each row begin set @a:= 1; end| delimiter ;| --echo End of 5.0 tests
sql/share/errmsg.txt +2 −0 Original line number Diff line number Diff line Loading @@ -5619,3 +5619,5 @@ ER_NON_GROUPING_FIELD_USED 42000 eng "non-grouping field '%-.64s' is used in %-.64s clause" ER_TABLE_CANT_HANDLE_SPKEYS eng "The used table type doesn't support SPATIAL indexes" ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA eng "Triggers can not be created on system tables"
sql/sql_trigger.cc +9 −0 Original line number Diff line number Diff line Loading @@ -183,6 +183,15 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create) !(tables= add_table_for_trigger(thd, thd->lex->spname))) DBUG_RETURN(TRUE); /* We don't allow creating triggers on tables in the 'mysql' schema */ if (create && !my_strcasecmp(system_charset_info, "mysql", tables->db)) { my_error(ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA, MYF(0)); DBUG_RETURN(TRUE); } /* We should have only one table in table list. */ DBUG_ASSERT(tables->next_global == 0); Loading