summaryrefslogtreecommitdiff
path: root/sql/sql_delete.cc
diff options
context:
space:
mode:
authorunknown <monty@mashka.mysql.fi>2003-02-17 02:14:37 +0200
committerunknown <monty@mashka.mysql.fi>2003-02-17 02:14:37 +0200
commit300b3fb64280ae3d982745b683029a2722b3daef (patch)
tree49ba5df63376ec1ba88e54e1446b29a777bba1a9 /sql/sql_delete.cc
parent8b4e28f8eb75dfa87196fefcf39854e89378e00e (diff)
downloadmariadb-git-300b3fb64280ae3d982745b683029a2722b3daef.tar.gz
Fixed multi-table-delete for InnoDB tables
Novell patches Makefile.am: Novell patch client/mysql.cc: Novell patch configure.in: Novell patch extra/mysql_waitpid.c: Novell patch include/my_pthread.h: Novell patch include/mysql.h: Novell patch libmysql/libmysql.c: Novell patch libmysqld/libmysqld.c: Novell patch mysql-test/mysql-test-run.sh: Don't use running server with --valgrind mysql-test/r/innodb.result: Updated results mysql-test/r/rpl000001.result: Updated results mysql-test/r/rpl000004.result: Updated results mysql-test/r/rpl_log.result: Updated results mysql-test/r/type_blob.result: Updated results mysql-test/std_data/words.dat: Added more words to make type_blob test relevant mysql-test/t/innodb.test: test of multi-table-delete mysql-test/t/rpl000001.test: Update for new word file mysql-test/t/type_blob.test: Test if BLOB IS NULL on NOT NULL column mysys/my_init.c: Novell patch mysys/my_netware.c: Novell patch netware/Makefile.am: Novell patch netware/init_db.sql: Novell patch netware/isamchk.def: Novell patch netware/isamlog.def: Novell patch netware/libmysql.def: Novell patch netware/my_print_defaults.def: Novell patch netware/myisamchk.def: Novell patch netware/myisamlog.def: Novell patch netware/myisampack.def: Novell patch netware/mysql.def: Novell patch netware/mysql_install_db.c: Novell patch netware/mysql_install_db.def: Novell patch netware/mysql_test_run.def: Novell patch netware/mysqladmin.def: Novell patch netware/mysqlbinlog.def: Novell patch netware/mysqlcheck.def: Novell patch netware/mysqld_safe.c: Novell patch netware/mysqldump.def: Novell patch netware/mysqlimport.def: Novell patch netware/mysqlshow.def: Novell patch netware/mysqltest.def: Novell patch netware/pack_isam.def: Novell patch netware/perror.def: Novell patch netware/replace.def: Novell patch netware/resolveip.def: Novell patch netware/test_db.sql: Novell patch scripts/make_binary_distribution.sh: Novell patch sql/item_cmpfunc.h: Optimization of 'IS NULL' sql/mysql_priv.h: Code cleanup sql/mysqld.cc: Novell patch sql/net_pkg.cc: Code cleanup sql/records.cc: Fixed multi-table-delete for InnoDB tables sql/sql_delete.cc: Fixed multi-table-delete for InnoDB tables sql/sql_handler.cc: Code cleanup sql/sql_table.cc: Code cleanup sql/structs.h: Fixed multi-table-delete for InnoDB tables
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 4997305de6b..1507d49ebd6 100644
--- a/sql/sql_delete.cc
+++ b/sql/sql_delete.cc
@@ -393,6 +393,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)
{
@@ -418,7 +419,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])))
@@ -432,7 +438,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);
}