summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <Sinisa@sinisa.nasamreza.org>2004-02-19 19:43:46 +0200
committerunknown <Sinisa@sinisa.nasamreza.org>2004-02-19 19:43:46 +0200
commite022b27860309684497de6e0e78135c1139325e4 (patch)
treea5d6697daf9ae5d579d058632d73c80686482c12 /sql
parent6c1795ee098cb6285610425b9b30ee6ab1caf34b (diff)
downloadmariadb-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.cc9
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++;
}