1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

Fix for bug #5890 "Triggers fail for DELETE without WHERE".

If we have DELETE with always true WHERE clause we should not use 
optimized delete_all_rows() method for tables with DELETE triggers,
because in this case we will lose side-effect of deletion.


mysql-test/r/trigger.result:
  Added test for bug #5890 "Triggers fail for DELETE without WHERE".
mysql-test/t/trigger.test:
  Added test for bug #5890 "Triggers fail for DELETE without WHERE".
sql/sql_delete.cc:
  mysql_delete(): 
    We should not use optimized delete_all_rows() method for tables
    with DELETE triggers, because in this case we will lose side-effect
    of deletion.
sql/sql_trigger.h:
  Added new Table_triggers_list::has_delete_triggers() method which
  allows to understand quickly if we have some DELETE triggers in
  our list.
This commit is contained in:
unknown
2004-11-12 17:04:07 +03:00
parent e5fd013fdf
commit bb43e8317f
4 changed files with 42 additions and 2 deletions

View File

@ -58,5 +58,11 @@ public:
static bool check_n_load(THD *thd, const char *db, const char *table_name,
TABLE *table);
bool has_delete_triggers()
{
return (bodies[TRG_EVENT_DELETE][TRG_ACTION_BEFORE] ||
bodies[TRG_EVENT_DELETE][TRG_ACTION_AFTER]);
}
friend class Item_trigger_field;
};