Commit 88afd72b authored by unknown's avatar unknown
Browse files

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

 Because they do not work, we do not allow creating triggers on tables
 within the 'mysql' schema.

 (They may be made to work and re-enabled at some later date, but not
 in 5.0 or 5.1.)


mysql-test/r/trigger.result:
  Add new results
mysql-test/t/trigger.test:
  Add new regression test for creating triggers on system schema
sql/share/errmsg.txt:
  Add new error message
sql/sql_trigger.cc:
  Disallow creating triggers on tables in the 'mysql' schema
parent c3cb4690
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -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
+23 −1
Original line number Diff line number Diff line
@@ -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
+2 −0
Original line number Diff line number Diff line
@@ -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"
+9 −0
Original line number Diff line number Diff line
@@ -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);