Commit 4eb4b37c authored by unknown's avatar unknown

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.
parent 91923ed2
...@@ -466,6 +466,12 @@ bool mysql_ha_read(THD *thd, TABLE_LIST *tables, ...@@ -466,6 +466,12 @@ bool mysql_ha_read(THD *thd, TABLE_LIST *tables,
{ {
mysql_ha_close_table(thd, tables); mysql_ha_close_table(thd, tables);
hash_tables->table= NULL; 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; goto retry;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment