• bar@mysql.com's avatar
    Bug#15581: COALESCE function truncates mutli-byte TINYTEXT values · f206a123
    bar@mysql.com authored
    field.cc:
      BLOB variations have number-in-bytes limit,
      unlike CHAR/VARCHAR which have number-of-characters limits.
      A tinyblob column can store up to 255 bytes.
      In the case of basic Latin letters (which use 1 byte per character)
      we can store up to 255 characters in a tinyblob column.
      When passing an utf8 tinyblob column as an argument into
      a function (e.g. COALESCE) we need to reserve 3*255 bytes.
      I.e. multiply length in bytes to mbcharlen for the character set.
      Although in reality a tinyblob column can never be 3*255 bytes long,
      we need to set max_length to multiply to make fix_length_and_dec()
      of the function-caller (e.g. COALESCE) calculate the correct max_length
      for the column being created.
    
    ctype_utf8.result, ctype_utf8.test:
      Adding test case.
    f206a123
field.cc 179 KB