Commit ae0acc84 authored by unknown's avatar unknown
Browse files

Bug #6019 SELECT tries to use too short prefix index on utf8 data

parent a5484c0c
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -779,3 +779,14 @@ id term
2	testetest
3	testtest
DROP TABLE t1;
set names utf8;
create table t1 (
a int primary key,
b varchar(6),
index b3(b(3))
) engine=myisam character set=utf8;
insert into t1 values(1,'foo'),(2,'foobar');
select * from t1 where b like 'foob%';
a	b
2	foobar
drop table t1;
+15 −0
Original line number Diff line number Diff line
@@ -620,3 +620,18 @@ SELECT id, term FROM t1 where (list_id = 1) AND (term = "test
SELECT id, term FROM t1 where (list_id = 1) AND (term = "testetest");
SELECT id, term FROM t1 where (list_id = 1) AND (term = "testtest");
DROP TABLE t1;

#
# Bug #6019 SELECT tries to use too short prefix index on utf8 data
#
set names utf8;
--disable_warnings
create table t1 (
  a int primary key,
  b varchar(6),
  index b3(b(3))
) engine=myisam character set=utf8;
--enable_warnings
insert into t1 values(1,'foo'),(2,'foobar');
select * from t1 where b like 'foob%';
drop table t1;
+4 −0
Original line number Diff line number Diff line
@@ -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);
+2 −2
Original line number Diff line number Diff line
@@ -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
};