Commit b92f3309 authored by davi@moksha.com.br's avatar davi@moksha.com.br
Browse files

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.
parent c3d06676
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -466,6 +466,12 @@ bool mysql_ha_read(THD *thd, TABLE_LIST *tables,
  {
    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;
  }