• unknown's avatar
    Fix for bug #28652: MySQL (with-debug=full) asserts when alter table operations · 55aa43e2
    unknown authored
    Problem: we may create a deadlock committing changes in the mysql_alter_table() when 
    LOCK_open is set. Moreover, "in some variants of the ALTER TABLE commit
    happens earlier, outside of LOCK_open, in other later - inside. It's no good, a storage 
    engine code that is called in between could expect a consistency - either there is a 
    transaction or there is not".
    Fix: move the commit to happen earlier and outside of the LOCK_open.
    
    
    mysql-test/r/innodb_mysql.result:
      Fix for bug #28652: MySQL (with-debug=full) asserts when alter table operations
        - test result.
    mysql-test/t/innodb_mysql.test:
      Fix for bug #28652: MySQL (with-debug=full) asserts when alter table operations
        - test case.
    sql/sql_table.cc:
      Fix for bug #28652: MySQL (with-debug=full) asserts when alter table operations
        - commit moved to happen earlier in the mysql_alter_table(), 
          now we commit changes at the same time as in case when a temporary 
          table is used.
    55aa43e2
sql_table.cc 131 KB