• unknown's avatar
    Bug#24985 - UTF8 ENUM primary key on MEMORY using BTREE · 1fd0ba89
    unknown authored
                causes incorrect duplicate entries
    
    Keys for BTREE indexes on ENUM and SET columns of MEMORY tables
    with character set UTF8 were computed incorrectly. Many
    different column values got the same key value.
    
    Apart of possible performance problems, it made unique indexes
    of this type unusable because it rejected many different
    values as duplicates.
    
    The problem was that multibyte character detection was tried
    on the internal numeric column value. Many values were not
    identified as characters. Their key value became blank filled.
    
    Thanks to Alexander Barkov and Ramil Kalimullin for the patch,
    which sets the character set of ENUM and SET key segments to
    the pseudo binary character set.
    
    
    mysql-test/r/heap_btree.result:
      Bug#24985 - UTF8 ENUM primary key on MEMORY using BTREE
                  causes incorrect duplicate entries
      Added test result.
    mysql-test/t/heap_btree.test:
      Bug#24985 - UTF8 ENUM primary key on MEMORY using BTREE
                  causes incorrect duplicate entries
      Added test.
    sql/ha_heap.cc:
      Bug#24985 - UTF8 ENUM primary key on MEMORY using BTREE
                  causes incorrect duplicate entries
      Set key segment charset to my_charset_bin for ENUM and SET
      columns.
    1fd0ba89
ha_heap.cc 16.8 KB