summaryrefslogtreecommitdiff
path: root/sql/sql_delete.cc
diff options
context:
space:
mode:
authorunknown <dlenev@mysql.com>2004-11-12 17:21:24 +0300
committerunknown <dlenev@mysql.com>2004-11-12 17:21:24 +0300
commitaca57a3d2d1de42e56346c54d0d96620e59a38ee (patch)
tree1a2213a0f797f794ee92f5b6660ac6ba58a6c411 /sql/sql_delete.cc
parent980a4188f384902b902f6b5bad2258e0e78df646 (diff)
parentbb43e8317fc3d78fd5f3d22a0ca0acf090540cd5 (diff)
downloadmariadb-git-aca57a3d2d1de42e56346c54d0d96620e59a38ee.tar.gz
Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/dlenev/src/mysql-5.0-bg5890 sql/sql_delete.cc: Auto merged
Diffstat (limited to 'sql/sql_delete.cc')
-rw-r--r--sql/sql_delete.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc
index b8f560b3ef2..165a5409995 100644
--- a/sql/sql_delete.cc
+++ b/sql/sql_delete.cc
@@ -63,9 +63,14 @@ int mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, SQL_LIST *order,
if (thd->lex->duplicates == DUP_IGNORE)
select_lex->no_error= 1;
- /* Test if the user wants to delete all rows */
+ /*
+ 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.
+ */
if (!using_limit && const_cond && (!conds || conds->val_int()) &&
- !(specialflag & (SPECIAL_NO_NEW_FUNC | SPECIAL_SAFE_MODE)))
+ !(specialflag & (SPECIAL_NO_NEW_FUNC | SPECIAL_SAFE_MODE)) &&
+ !(table->triggers && table->triggers->has_delete_triggers()))
{
deleted= table->file->records;
if (!(error=table->file->delete_all_rows()))