• unknown's avatar
    Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash · 013b3d8a
    unknown authored
    Version for 5.0.
    It fixes three problems:
    1. The cause of the bug was that we did not check the table version for
     the HANDLER ... READ commands. We did not notice when a table was
     replaced by a new one. This can happen during ALTER TABLE, REPAIR
     TABLE, and OPTIMIZE TABLE (there might be more cases). I call the fix
     for this problem "the primary bug fix".
    2. mysql_ha_flush() was not always called with a locked LOCK_open.
     Though the function comment clearly said it must.
     I changed the code so that the locking is done when required. I call
     the fix for this problem "the secondary fix".
    3. In 5.0 (not in 4.1 or 4.0) DROP TABLE had a possible deadlock flaw in
     concur with FLUSH TABLES WITH READ LOCK. I call the fix for this
     problem "the 5.0 addendum fix".
    
    
    include/my_pthread.h:
      Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
      Added a new macro for the 5.0 addendum fix.
    mysql-test/r/handler.result:
      Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
      The test result.
    mysql-test/t/handler.test:
      Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
      The test case.
    sql/lock.cc:
      Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
      Changed a comment which did confuse me and which is not fully
      correct anymore after the 5.0 addendum fix.
      Added an assertion which would fire without the 5.0 addendum fix.
    sql/mysql_priv.h:
      Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
      Changed a definition for the secondary fix.
    sql/sql_base.cc:
      Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
      Changed function calls for the secondary fix.
    sql/sql_class.cc:
      Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
      Changed a function call for the secondary fix.
    sql/sql_handler.cc:
      Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
      The first two diffs make the primary bug fix.
      The rest is for the secondary fix.
    sql/sql_table.cc:
      Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
      The first diff (four changed places) make the 5.0 addendum fix.
      The other three are changed function calls for the secondary fix.
    013b3d8a
sql_class.cc 53.5 KB