summaryrefslogtreecommitdiff
path: root/sql/sql_delete.cc
diff options
context:
space:
mode:
authorunknown <igor@rurik.mysql.com>2003-12-11 14:55:48 -0800
committerunknown <igor@rurik.mysql.com>2003-12-11 14:55:48 -0800
commit9570d010d571d62a9cbdc9674606b1f154b4dead (patch)
tree27bbc53533e288c5402000d6358fe6b91ed1eb32 /sql/sql_delete.cc
parent28b1f63aa7f6ed40d68c932cfe33420c12c7347d (diff)
downloadmariadb-git-9570d010d571d62a9cbdc9674606b1f154b4dead.tar.gz
Many files:
Fixed a bug causing a crash for multi-update/multi-delete with impossible where (bug #1860). sql/sql_class.h: Fixed a bug causing a crash for multi-update/multi-delete with impossible where (bug #1860). sql/sql_delete.cc: Fixed a bug causing a crash for multi-update/multi-delete with impossible where (bug #1860). sql/sql_update.cc: Fixed a bug causing a crash for multi-update/multi-delete with impossible where (bug #1860). mysql-test/t/multi_update.test: Fixed a bug causing a crash for multi-update/multi-delete with impossible where (bug #1860). mysql-test/r/multi_update.result: Fixed a bug causing a crash for multi-update/multi-delete with impossible where (bug #1860). BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted
Diffstat (limited to 'sql/sql_delete.cc')
-rw-r--r--sql/sql_delete.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc
index ee2b720907d..399f237bf2f 100644
--- a/sql/sql_delete.cc
+++ b/sql/sql_delete.cc
@@ -236,7 +236,8 @@ multi_delete::multi_delete(THD *thd_arg, TABLE_LIST *dt,
uint num_of_tables_arg)
: delete_tables(dt), thd(thd_arg), deleted(0),
num_of_tables(num_of_tables_arg), error(0),
- do_delete(0), transactional_tables(0), log_delayed(0), normal_tables(0)
+ do_delete(0), transactional_tables(0), log_delayed(0), normal_tables(0),
+ tempfiles_inited(0)
{
tempfiles = (Unique **) sql_calloc(sizeof(Unique *) * (num_of_tables-1));
}
@@ -297,6 +298,7 @@ multi_delete::initialize_tables(JOIN *join)
table->file->ref_length,
MEM_STRIP_BUF_SIZE);
}
+ tempfiles_inited= 1;
init_ftfuncs(thd,1);
DBUG_RETURN(thd->fatal_error != 0);
}
@@ -422,6 +424,8 @@ int multi_delete::do_deletes(bool from_send_error)
table_being_deleted = delete_tables;
do_delete= 0;
+ if (!tempfiles_inited)
+ DBUG_RETURN(0);
for (table_being_deleted=table_being_deleted->next;
table_being_deleted ;
table_being_deleted=table_being_deleted->next, counter++)