diff options
Diffstat (limited to 'sql/sql_delete.cc')
-rw-r--r-- | sql/sql_delete.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index 1103e5590d8..8ba293c82f9 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -274,6 +274,8 @@ multi_delete::initialize_tables(JOIN *join) /* We are going to delete from this table */ walk->table=tab->table; walk=walk->next; + if (tab == join->join_tab) + tab->table->no_keyread=1; } } } @@ -353,6 +355,10 @@ void multi_delete::send_error(uint errcode,const char *err) { /* First send error what ever it is ... */ ::send_error(&thd->net,errcode,err); + + /* reset used flags */ + delete_tables->table->no_keyread=0; + /* If nothing deleted return */ if (!deleted) return; @@ -451,6 +457,9 @@ bool multi_delete::send_eof() thd->proc_info="deleting from reference tables"; int error = do_deletes(false); + /* reset used flags */ + delete_tables->table->no_keyread=0; + thd->proc_info="end"; if (error && error != -1) { |