• Marko Mäkelä's avatar
    MDEV-20190 Instant operation fails when add column and collation change on non-indexed column · f9ceb0a6
    Marko Mäkelä authored
    We must relax too strict debug assertions. For latin1_swedish_ci,
    mtype=DATA_CHAR or mtype=DATA_VARCHAR will be used instead of
    mtype=DATA_MYSQL or mtype=DATA_VARMYSQL. Likewise, some changes of
    dtype_get_charset_coll() do not affect the data type encoding,
    but only any indexes that are defined on the column.
    
    Charset::same_encoding(): Check whether two charset-collations have
    the same character set encoding.
    
    dict_col_t::same_encoding(): Check whether two character columns
    have the same character set encoding.
    
    dict_col_t::same_type(): Check whether two columns have a compatible
    data type encoding.
    
    dict_col_t::same_format(), dict_table_t::instant_column(): Do not
    compare mtype or the charset-collation of prtype directly.
    Rely on dict_col_t::same_type() instead.
    
    dtype_get_charset_coll(): Narrow the return type to uint16_t.
    
    This is a refined version of a fix that was developed by
    Thirunarayanan Balathandayuthapani.
    f9ceb0a6
dict0mem.h 79.7 KB