• Marko Mäkelä's avatar
    Bug#52199 utf32: mbminlen=4, mbmaxlen=4, type->mbminlen=0, type->mbmaxlen=4 · deaba603
    Marko Mäkelä authored
    Merge and adjust a forgotten change to fix this bug.
    rb://393 approved by Jimmy Yang
      ------------------------------------------------------------------------
      r3794 | marko | 2009-01-07 14:14:53 +0000 (Wed, 07 Jan 2009) | 18 lines
    
      branches/6.0: Allow the minimum length of a multi-byte character to be
      up to 4 bytes. (Bug #35391)
    
      dtype_t, dict_col_t: Replace mbminlen:2, mbmaxlen:3 with mbminmaxlen:5.
      In this way, the 5 bits can hold two values of 0..4, and the storage size
      of the fields will not cross the 64-bit boundary.  Encode the values as
      DATA_MBMAX * mbmaxlen + mbminlen.  Define the auxiliary macros
      DB_MBMINLEN(mbminmaxlen), DB_MBMAXLEN(mbminmaxlen), and
      DB_MINMAXLEN(mbminlen, mbmaxlen).
    
      Try to trim and pad UTF-16 and UTF-32 with spaces as appropriate.
    
      Alexander Barkov suggested the use of cs->cset->fill(cs, buff, len, 0x20).
      ha_innobase::store_key_val_for_row() now does that, but the added function
      row_mysql_pad_col() does not, because it doesn't have the MySQL TABLE object.
    
      rb://49 approved by Heikki Tuuri
      ------------------------------------------------------------------------
    deaba603
ha_innodb.cc 325 KB