summaryrefslogtreecommitdiff
path: root/strings
diff options
context:
space:
mode:
authorunknown <bar@mysql.com>2004-10-14 16:36:29 +0500
committerunknown <bar@mysql.com>2004-10-14 16:36:29 +0500
commitae0acc8472b23729396cc1ad6b4a904680e1f0ac (patch)
tree1338c5857c0f3d49abe290e1441ad81a9da6a844 /strings
parenta5484c0c6fc7692621e495a4a2c87798941c1309 (diff)
downloadmariadb-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.c4
-rw-r--r--strings/ctype-utf8.c4
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
};