diff options
author | unknown <gkodinov/kgeorge@rakia.gmz> | 2007-02-01 13:26:25 +0200 |
---|---|---|
committer | unknown <gkodinov/kgeorge@rakia.gmz> | 2007-02-01 13:26:25 +0200 |
commit | 1ff126e9353c85d7b56f0555fb85bfae9f756e04 (patch) | |
tree | 1311fa35ce22e7560a71025c38f0e0a4074e8f4d /sql/sql_delete.cc | |
parent | 6bddf2a01f8c13668ac46d45e85d15ee874573b9 (diff) | |
parent | 0c523325120825d6462f5c82ddf40d9b41c8b527 (diff) | |
download | mariadb-git-1ff126e9353c85d7b56f0555fb85bfae9f756e04.tar.gz |
Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into rakia.gmz:/home/kgeorge/mysql/autopush/B23556-5.0-opt
Diffstat (limited to 'sql/sql_delete.cc')
-rw-r--r-- | sql/sql_delete.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index e8291edda5d..94d753eb703 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -75,10 +75,14 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, Test if the user wants to delete all rows and deletion doesn't have any side-effects (because of triggers), so we can use optimized handler::delete_all_rows() method. + We implement fast TRUNCATE for InnoDB even if triggers are present. + TRUNCATE ignores triggers. */ if (!using_limit && const_cond && (!conds || conds->val_int()) && !(specialflag & (SPECIAL_NO_NEW_FUNC | SPECIAL_SAFE_MODE)) && - !(table->triggers && table->triggers->has_delete_triggers())) + (thd->lex->sql_command == SQLCOM_TRUNCATE || + !(table->triggers && table->triggers->has_delete_triggers())) + ) { deleted= table->file->records; if (!(error=table->file->delete_all_rows())) |