• Alexander Barkov's avatar
    A cleanup for MDEV-27896 Wrong result upon `COLLATE latin1_bin CHARACTER SET... · e9adc395
    Alexander Barkov authored
    A cleanup for MDEV-27896 Wrong result upon `COLLATE latin1_bin CHARACTER SET latin1` on the table or the database level
    
    Changing the error messages in a statement like this:
    
    CREATE DATABASE db1
             COLLATE utf8mb4_bin
             CHARACTER SET utf8mb4
             CHARACTER SET latin1;
    
    from
      COLLATION 'utf8mb4_bin' is not valid for CHARACTER SET 'latin1'
    
    to a more expected:
    
      Conflicting declarations: 'CHARACTER SET utf8mb4' and 'CHARACTER SET latin1'
    
    In order to do this:
    - Adding a new type TYPE_CHARACTER_SET_COLLATE_EXACT into
      Lex_exact_charset_extended_collation_attrs_st
    
    - Removing m_had_charset_exact from its descendant class
      Lex_extended_charset_extended_collation_attrs_st
    
    Additional cleanup:
    - Changing methods in Lex_exact_charset_extended_collation_attrs_st
      set_charset(), set_charset_collate_default(), set_charset_collate_binary()
      to get Lex_exact_charset instead CHARSET_INFO as a parameter,
      to guarantee that the argument is only CHARACTER SET and does not have
      any COLLATE clauses yet. This change is not directly related to
      the error message change.
    e9adc395
lex_charset.h 18.4 KB