diff options
author | unknown <davi@moksha.com.br> | 2007-10-12 10:55:46 -0300 |
---|---|---|
committer | unknown <davi@moksha.com.br> | 2007-10-12 10:55:46 -0300 |
commit | 4eb4b37cfa8291e0740d4f5978a40974308dee63 (patch) | |
tree | 6c435d327bcada48efbcb8d2a84f503816cb8d2c /sql/sql_handler.cc | |
parent | 91923ed2d4732e5f59e357cc31e087fbb97356fb (diff) | |
download | mariadb-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.cc | 6 |
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; } |