• Annamalai Gurusami's avatar
    Bug #14036214 MYSQLD CRASHES WHEN EXECUTING UPDATE IN TRX WITH · 378a7d1e
    Annamalai Gurusami authored
    CONSISTENT SNAPSHOT OPTION
    
    A transaction is started with a consistent snapshot.  After 
    the transaction is started new indexes are added to the 
    table.  Now when we issue an update statement, the optimizer
    chooses an index.  When the index scan is being initialized
    via ha_innobase::change_active_index(), InnoDB reports 
    the error code HA_ERR_TABLE_DEF_CHANGED, with message 
    stating that "insufficient history for index".
    
    This error message is propagated up to the SQL layer.  But
    the my_error() api is never called.  The statement level
    diagnostics area is not updated with the correct error 
    status (it remains in Diagnostics_area::DA_EMPTY).  
    
    Hence the following check in the Protocol::end_statement()
    fails.
    
     516   case Diagnostics_area::DA_EMPTY:
     517   default:
     518     DBUG_ASSERT(0);
     519     error= send_ok(thd->server_status, 0, 0, 0, NULL);
     520     break;
    
    The fix is to backport the fix of bugs 14365043, 11761652 
    and 11746399. 
    
    14365043 PROTOCOL::END_STATEMENT(): ASSERTION `0' FAILED
    11761652 HA_RND_INIT() RESULT CODE NOT CHECKED
    11746399 RETURN VALUES OF HA_INDEX_INIT() AND INDEX_INIT() IGNORED
    
    rb://1227 approved by guilhem and mattiasj.
    378a7d1e
handler.cc 158 KB