• Alexander Barkov's avatar
    MDEV-34376 Wrong data types when mixing an utf8 *TEXT column and a short binary · 0e273510
    Alexander Barkov authored
    A mixture of a multi-byte *TEXT column and a short binary column
    produced a too large column.
    For example, COALESCE(tinytext_utf8mb4, short_varbinary)
    produced a BLOB column instead of an expected TINYBLOB.
    
    - Adding a virtual method Type_all_attributes::character_octet_length(),
      returning max_length by default.
    - Overriding Item_field::character_octet_length() to extract
      the octet length from the underlying Field.
    - Overriding Item_ref::character_octet_length() to extract
      the octet length from the references Item (e.g. as VIEW fields).
    - Fixing Type_numeric_attributes::find_max_octet_length() to
      take the octet length using the new method character_octet_length()
      instead of accessing max_length directly.
    0e273510
sql_type.cc 297 KB