diff options
author | unknown <Sinisa@sinisa.nasamreza.org> | 2004-02-19 19:43:46 +0200 |
---|---|---|
committer | unknown <Sinisa@sinisa.nasamreza.org> | 2004-02-19 19:43:46 +0200 |
commit | e022b27860309684497de6e0e78135c1139325e4 (patch) | |
tree | a5d6697daf9ae5d579d058632d73c80686482c12 /sql | |
parent | 6c1795ee098cb6285610425b9b30ee6ab1caf34b (diff) | |
download | mariadb-git-e022b27860309684497de6e0e78135c1139325e4.tar.gz |
Fix for a bug #2799.
Multi-table delete's with tables having foreign key constraints
did not return the error.
Also added tests for multi-table updates.
Diffstat (limited to 'sql')
-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 7ca259425aa..ed6607c61dd 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -347,7 +347,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); @@ -450,7 +450,12 @@ int multi_delete::do_deletes(bool from_send_error) if ((local_error=table->file->delete_row(table->record[0]))) { table->file->print_error(local_error,MYF(0)); - break; + if (transactional_tables) + { + DBUG_RETURN(local_error); + } + else + break; } deleted++; } |