• Marko Mäkelä's avatar
    MDEV-29144 ER_TABLE_SCHEMA_MISMATCH or crash on DISCARD/IMPORT · 782b2a75
    Marko Mäkelä authored
    mysql_discard_or_import_tablespace(): On successful
    ALTER TABLE...DISCARD TABLESPACE, evict the table handle from the
    table definition cache, so that ha_innobase::close() will be invoked,
    like InnoDB expects to be the case. This will avoid an assertion failure
    ut_a(table->get_ref_count() == 0) during IMPORT TABLESPACE.
    
    ha_innobase::open(): Do not issue any ER_TABLESPACE_DISCARDED warning.
    Member functions for DML will do that.
    
    ha_innobase::truncate(), ha_innobase::check_if_supported_inplace_alter():
    Issue ER_TABLESPACE_DISCARDED warnings, to compensate for the removal of
    the warning in ha_innobase::open().
    
    row_quiesce_write_indexes(): Only write information about committed
    indexes. The ALTER TABLE t NOWAIT ADD INDEX(c) in the nondeterministic
    test case will most of the time fail due to a metadata lock (MDL) timeout
    and leave behind an uncommitted index.
    
    Reviewed by: Sergei Golubchik
    782b2a75
row0quiesce.cc 18 KB