diff options
Diffstat (limited to 'sql/sql_delete.cc')
-rw-r--r-- | sql/sql_delete.cc | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index f9dba49d2e3..37121e64ecc 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -429,6 +429,8 @@ multi_delete::initialize_tables(JOIN *join) walk= walk->next_local; /* Don't use KEYREAD optimization on this table */ tbl->no_keyread=1; + /* Don't use record cache */ + tbl->no_cache= 1; tbl->used_keys.clear_all(); if (tbl->file->has_transactions()) log_delayed= transactional_tables= 1; @@ -744,8 +746,11 @@ int mysql_truncate(THD *thd, TABLE_LIST *table_list, bool dont_send_ok) { /* Probably InnoDB table */ table_list->lock_type= TL_WRITE; - DBUG_RETURN(mysql_delete(thd, table_list, (COND*) 0, (SQL_LIST*) 0, - HA_POS_ERROR, 0)); + ha_enable_transaction(thd, FALSE); + error= mysql_delete(thd, table_list, (COND*) 0, (SQL_LIST*) 0, + HA_POS_ERROR, 0); + ha_enable_transaction(thd, TRUE); + DBUG_RETURN(error); } if (lock_and_wait_for_table_name(thd, table_list)) DBUG_RETURN(-1); |