BUG复现过程

    在DEBUG版本下,MySQL实例是crash的,crash在 line 5643。

    BUG原因分析

    BUG修复方法

    BUG修复也比较简单,在rename的过程中,先更改数据字典,然后调用函数清理内存中的对象,这样在重新dict_load_foreigns的时候,就一切正常了。

    MySQL官方版本在5.6.23修复了这个问题。

    alter 添加和删除索引导致不一致

      复现此BUG的时候需要使用DEBUG_SYNC,在alter table的过程中,add key(col2)步骤成功,而在drop key的时候InnoDB报失败。 然后导致MySQL server层对表t1的定义和InnoDB层的定义不一致。

      BUG原因分析 在drop key报引擎失败的时候,MySQL server层开始回滚整个DDL语句,server层这时回滚了FRM的定义,而InnoDB成功添加的key(col2)却没有回滚。

      BUG修复方法 在alter的过程中,记录每一个阶段成功的调用,在语句结束的时候,如果遇到需要回滚的statement,需要同时回滚引擎层和server层。