summaryrefslogtreecommitdiff
path: root/sql/sql_delete.cc
diff options
context:
space:
mode:
authormonty@mashka.mysql.fi <>2003-02-17 05:43:37 +0200
committermonty@mashka.mysql.fi <>2003-02-17 05:43:37 +0200
commit90bf0744383ea17fc783e405ea4faa2d4f06ae46 (patch)
treea3fbfddbae0d5a6e600e68942bb243fadb5269aa /sql/sql_delete.cc
parent6ce8e1e7046df712f442ea96d568f5b21eeb5511 (diff)
parent6051b2f9988f1e317be41e49c64718cc610c1260 (diff)
downloadmariadb-git-90bf0744383ea17fc783e405ea4faa2d4f06ae46.tar.gz
Merge with 4.0.11 tree to get latest bug fixes
Diffstat (limited to 'sql/sql_delete.cc')
-rw-r--r--sql/sql_delete.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc
index 703eafd0af6..05f84616a4c 100644
--- a/sql/sql_delete.cc
+++ b/sql/sql_delete.cc
@@ -411,6 +411,7 @@ void multi_delete::send_error(uint errcode,const char *err)
int multi_delete::do_deletes(bool from_send_error)
{
int local_error= 0, counter= 0;
+ DBUG_ENTER("do_deletes");
if (from_send_error)
{
@@ -436,7 +437,12 @@ int multi_delete::do_deletes(bool from_send_error)
}
READ_RECORD info;
- init_read_record(&info,thd,table,NULL,0,0);
+ init_read_record(&info,thd,table,NULL,0,1);
+ /*
+ Ignore any rows not found in reference tables as they may already have
+ been deleted by foreign key handling
+ */
+ info.ignore_not_found_rows= 1;
while (!(local_error=info.read_record(&info)) && !thd->killed)
{
if ((local_error=table->file->delete_row(table->record[0])))
@@ -450,7 +456,7 @@ int multi_delete::do_deletes(bool from_send_error)
if (local_error == -1) // End of file
local_error = 0;
}
- return local_error;
+ DBUG_RETURN(local_error);
}