diff options
author | unknown <bar@mysql.com> | 2004-10-14 16:36:29 +0500 |
---|---|---|
committer | unknown <bar@mysql.com> | 2004-10-14 16:36:29 +0500 |
commit | ae0acc8472b23729396cc1ad6b4a904680e1f0ac (patch) | |
tree | 1338c5857c0f3d49abe290e1441ad81a9da6a844 /strings | |
parent | a5484c0c6fc7692621e495a4a2c87798941c1309 (diff) | |
download | mariadb-git-ae0acc8472b23729396cc1ad6b4a904680e1f0ac.tar.gz |
Bug #6019 SELECT tries to use too short prefix index on utf8 data
Diffstat (limited to 'strings')
-rw-r--r-- | strings/ctype-mb.c | 4 | ||||
-rw-r--r-- | strings/ctype-utf8.c | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/strings/ctype-mb.c b/strings/ctype-mb.c index 3bfc66029ce..a41449d5e50 100644 --- a/strings/ctype-mb.c +++ b/strings/ctype-mb.c @@ -499,6 +499,10 @@ my_bool my_like_range_mb(CHARSET_INFO *cs, { char buf[10]; uint buflen; + uint charlen= my_charpos(cs, min_org, min_str, res_length/cs->mbmaxlen); + + if (charlen < (uint) (min_str - min_org)) + min_str= min_org + charlen; /* Write min key */ *min_length= (uint) (min_str - min_org); diff --git a/strings/ctype-utf8.c b/strings/ctype-utf8.c index 62e97d51328..fd6610b72b1 100644 --- a/strings/ctype-utf8.c +++ b/strings/ctype-utf8.c @@ -2059,7 +2059,7 @@ static MY_COLLATION_HANDLER my_collation_ci_handler = my_strnncoll_utf8, my_strnncollsp_utf8, my_strnxfrm_utf8, - my_like_range_simple, + my_like_range_mb, my_wildcmp_mb, my_strcasecmp_utf8, my_instr_mb, @@ -2119,7 +2119,7 @@ CHARSET_INFO my_charset_utf8_general_ci= 1, /* mbminlen */ 3, /* mbmaxlen */ 0, /* min_sort_char */ - 255, /* max_sort_char */ + 0xFFFF, /* max_sort_char */ &my_charset_utf8_handler, &my_collation_ci_handler }; |