• 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
structs.h 28.5 KB