diff options
author | pem@mysql.com <> | 2004-04-07 19:07:44 +0200 |
---|---|---|
committer | pem@mysql.com <> | 2004-04-07 19:07:44 +0200 |
commit | dfd59e296e2c267a21f1ea8b3b937e07730dad0d (patch) | |
tree | e5ac1517ff3dccc42352b7bac39ecd1c093d0ae6 /sql/sql_delete.cc | |
parent | 1541f2e7949416d6e172ef6406ecf140d3b26659 (diff) | |
parent | 61fd95d168b51092b7ce3ff56b2c8c8ed1a49c0f (diff) | |
download | mariadb-git-dfd59e296e2c267a21f1ea8b3b937e07730dad0d.tar.gz |
Merge 4.1 -> 5.0.
Diffstat (limited to 'sql/sql_delete.cc')
-rw-r--r-- | sql/sql_delete.cc | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index 7ebe9cb6002..ad6de901f56 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -194,6 +194,8 @@ int mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, SQL_LIST *order, else table->file->unlock_row(); // Row failed selection, release lock on it } + if (thd->killed && !error) + error= 1; // Aborted thd->proc_info="end"; end_read_record(&info); free_io_cache(table); // Will not do any harm @@ -376,7 +378,7 @@ bool multi_delete::send_data(List<Item> &values) table->status|= STATUS_DELETED; if (!(error=table->file->delete_row(table->record[0]))) deleted++; - else if (!table_being_deleted->next) + else if (!table_being_deleted->next || table_being_deleted->table->file->has_transactions()) { table->file->print_error(error,MYF(0)); DBUG_RETURN(1); @@ -395,6 +397,7 @@ bool multi_delete::send_data(List<Item> &values) DBUG_RETURN(0); } + void multi_delete::send_error(uint errcode,const char *err) { DBUG_ENTER("multi_delete::send_error"); @@ -484,6 +487,8 @@ int multi_delete::do_deletes(bool from_send_error) deleted++; } end_read_record(&info); + if (thd->killed && !local_error) + local_error= 1; if (local_error == -1) // End of file local_error = 0; } |