• Marko Mäkelä's avatar
    MDEV-15507 Assertion failed in dict_check_sys_tables on upgrade from 5.5 · c026e2c0
    Marko Mäkelä authored
    The InnoDB system table column SYS_TABLES.MIX_LEN was repurposed
    in InnoDB Plugin for MySQL 5.1, in
    commit 91111174 (MySQL 5.1.46).
    Until MySQL 5.6, it only contained a flag DICT_TF2_TEMPORARY.
    
    MySQL 5.6 introduced a number of flags that were transient
    in nature. One of these was introduced in 5.6.5, originally
    called DICT_TF2_USE_TABLESPACE and later renamed to
    DICT_TF2_USE_FILE_PER_TABLE. MySQL 5.7.6 introduced logic
    that insists that the flag be set for any table that does not
    reside in a shared tablespace, breaking upgrade from MySQL 5.5.
    
    MariaDB does not support shared tablespaces other than the
    InnoDB system tablespace. Also, some dependencies on
    SYS_TABLES.MIX_LEN were removed in an earlier fix:
    MDEV-13084 MariaDB 10.2 crashes on corrupted SYS_TABLES.MIX_LEN field
    (commit e813fe86).
    
    dict_check_sys_tables(): Remove a bogus debug assertion, and add a
    comment that explains how DICT_TF2_USE_FILE_PER_TABLE is used.
    
    dict_table_is_file_per_table(): Remove a bogus debug assertion.
    c026e2c0
dict0load.cc 105 KB