An error occurred fetching the project authors.
  1. 09 Dec, 2009 1 commit
    • Jon Olav Hauglid's avatar
      Backport of revno: 2599.169.2 · 8817b0d3
      Jon Olav Hauglid authored
      Bug #42074 concurrent optimize table and 
                 alter table = Assertion failed: thd->is_error()
      
      This assertion could occur if OPTIMIZE TABLE was started on a InnoDB table
      and the table was altered to different storage engine after OPTIMIZE
      had started. This allowed OPTIMIZE to pass the initial checks for 
      storage engine support, but fail once it reached "recreate+analyze"
      if this operation was not supported by the new storage engine.
      The bug had no consequences for non-debug builds of the server.
      
      In detail, the assertion was triggered when ha_analyze() returned 
      HA_ADMIN_NOT_IMPLEMENTED. This led to a code path which included an 
      assert checking for diagnostics area contents. Since this area had 
      not been filled, the assertion was triggered. The diagnostics area 
      is in this case only used to provide more detailed information about 
      why optimize failed. The triggered code path sends this information 
      to the client and clears the diagnostic area.
      
      This patch fixed the problem by adding an error message to the diagnostic 
      area if ha_analyze() fails. This error message contains the error code
      returned by ha_analyze().
      
      Test case added to innodb_mysql_sync.test.
      8817b0d3