summaryrefslogtreecommitdiff
path: root/sql/sql_handler.cc
diff options
context:
space:
mode:
authorunknown <davi@moksha.com.br>2007-10-12 10:55:46 -0300
committerunknown <davi@moksha.com.br>2007-10-12 10:55:46 -0300
commit4eb4b37cfa8291e0740d4f5978a40974308dee63 (patch)
tree6c435d327bcada48efbcb8d2a84f503816cb8d2c /sql/sql_handler.cc
parent91923ed2d4732e5f59e357cc31e087fbb97356fb (diff)
downloadmariadb-git-4eb4b37cfa8291e0740d4f5978a40974308dee63.tar.gz
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.
Diffstat (limited to 'sql/sql_handler.cc')
-rw-r--r--sql/sql_handler.cc6
1 files changed, 6 insertions, 0 deletions
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;
}