• Davi Arnaut's avatar
    Bug#41110: crash with handler command when used concurrently with alter table · e4f47653
    Davi Arnaut authored
    Bug#41112: crash in mysql_ha_close_table/get_lock_data with alter table
    
    The problem is that the server wasn't handling robustly failures
    to re-open a table during a HANDLER .. READ statement. If the
    table needed to be re-opened due to it's storage engine being
    altered to one that doesn't support HANDLER, a reference (dangling
    pointer) to a closed table could be left in place and accessed in
    later attempts to fetch from the table using the handler. Also,
    if the server failed to set a error message if the re-open
    failed. These problems could lead to server crashes or hangs.
    
    The solution is to remove any references to a closed table and
    to set a error if reopening a table during a HANDLER .. READ
    statement fails.
    
    mysql-test/include/handler.inc:
      Add test case for Bug#41110 and Bug#41112
    mysql-test/r/handler_innodb.result:
      Add test case result for Bug#41110 and Bug#41112
    mysql-test/r/handler_myisam.result:
      Add test case result for Bug#41110 and Bug#41112
    sql/sql_handler.cc:
      Remove redundant reopen check.
      Set errors even if reopening table.
      Reset TABLE_LIST::table reference when the table is closed.
    e4f47653
handler.inc 16.9 KB