• Alexander Barkov's avatar
    MDEV-30164 System variable for default collations · 75f25e4c
    Alexander Barkov authored
    This patch adds a way to override default collations
    (or "character set collations") for desired character sets.
    
    The SQL standard says:
    > Each collation known in an SQL-environment is applicable to one
    > or more character sets, and for each character set, one or more
    > collations are applicable to it, one of which is associated with
    > it as its character set collation.
    
    In MariaDB, character set collations has been hard-coded so far,
    e.g. utf8mb4_general_ci has been a hard-coded character set collation
    for utf8mb4.
    
    This patch allows to override (globally per server, or per session)
    character set collations, so for example, uca1400_ai_ci can be set as a
    character set collation for Unicode character sets
    (instead of compiled xxx_general_ci).
    
    The array of overridden character set collations is stored in a new
    (session and global) system variable @@character_set_collations and
    can be set as a comma separated list of charset=collation pairs, e.g.:
    
    SET @@character_set_collations='utf8mb3=uca1400_ai_ci,utf8mb4=uca1400_ai_ci';
    
    The variable is empty by default, which mean use the hard-coded
    character set collations (e.g. utf8mb4_general_ci for utf8mb4).
    
    The variable can also be set globally by passing to the server startup command
    line, and/or in my.cnf.
    75f25e4c
mysqld--help.result 81.8 KB