From 4eb4b37cfa8291e0740d4f5978a40974308dee63 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 12 Oct 2007 10:55:46 -0300 Subject: [PATCH] Bug#31409 RENAME TABLE causes server crash or deadlock when used with HANDLER statements If mysql_lock_tables fails because the lock was aborted, we need to reset thd->some_tables_delete, otherwise we might loop indefinitely because handler's tables are not closed in a standard way, meaning that close_thread_tables() (which resets some_tables_deleted) is not used. This patch fixes sporadical failures of handler_myisam/innodb tests which were introduced by previous fix for this bug. sql/sql_handler.cc: Properly reset thd->some_tables_deleted if mysql_lock_tables fails for some reason. --- sql/sql_handler.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc index e87381dd49c..822f2b2c419 100644 --- a/sql/sql_handler.cc +++ b/sql/sql_handler.cc @@ -466,6 +466,12 @@ retry: { mysql_ha_close_table(thd, tables); hash_tables->table= NULL; + /* + The lock might have been aborted, we need to manually reset + thd->some_tables_deleted because handler's tables are closed + in a non-standard way. Otherwise we might loop indefinitely. + */ + thd->some_tables_deleted= 0; goto retry; }