Below is the list of changes that have just been committed into a local
5.0 repository of kgeorge. When kgeorge does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2007-08-02 17:11:35+03:00, gkodinov@stripped +1 -0
Bug #30193: crash during drop table and kill
When DROP TABLE detects that it has been killed
by another thread it must unlock the table names
it locked.
Fixed by backporting the 5.1 error handling code.
sql/sql_table.cc@stripped, 2007-08-02 17:11:34+03:00, gkodinov@stripped +3 -2
Bug #30193: correct error handling when a thread
is killed inside DROP TABLE.
diff -Nrup a/sql/sql_table.cc b/sql/sql_table.cc
--- a/sql/sql_table.cc 2007-07-30 18:27:30 +03:00
+++ b/sql/sql_table.cc 2007-08-02 17:11:34 +03:00
@@ -256,8 +256,8 @@ int mysql_rm_table_part2(THD *thd, TABLE
drop_locked_tables(thd, db, table->table_name);
if (thd->killed)
{
- thd->no_warnings_for_error= 0;
- DBUG_RETURN(-1);
+ error=-1;
+ goto err_with_placeholders;
}
alias= (lower_case_table_names == 2) ? table->alias : table->table_name;
/* remove form file and isam files */
@@ -338,6 +338,7 @@ int mysql_rm_table_part2(THD *thd, TABLE
}
}
+err_with_placeholders:
if (!drop_temporary)
unlock_table_names(thd, tables, (TABLE_LIST*) 0);
thd->no_warnings_for_error= 0;