* kgeorge@stripped <kgeorge@stripped> [07/08/02 23:46]:
> 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;
OK to push.
--
-- Konstantin Osipov Software Developer, Moscow, Russia
-- MySQL AB, www.mysql.com The best DATABASE COMPANY in the GALAXY