summaryrefslogtreecommitdiff
path: root/strings
diff options
context:
space:
mode:
authorbar@mysql.com <>2004-10-14 16:36:29 +0500
committerbar@mysql.com <>2004-10-14 16:36:29 +0500
commite8278396195c340076d3e89ce2f6afc06e80aa87 (patch)
tree1338c5857c0f3d49abe290e1441ad81a9da6a844 /strings
parent48120f77ebbc673813aaa6b00ece0742d45b1467 (diff)
downloadmariadb-git-e8278396195c340076d3e89ce2f6afc06e80aa87.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
};