Loading mysql-test/r/ctype_utf8.result +29 −0 Original line number Diff line number Diff line Loading @@ -750,3 +750,32 @@ SELECT id FROM t1 WHERE (list_id = 1) AND (term = "letterd"); id 4 DROP TABLE t1; SET NAMES latin1; CREATE TABLE t1 ( id int unsigned NOT NULL auto_increment, list_id smallint unsigned NOT NULL, term text NOT NULL, PRIMARY KEY(id), INDEX(list_id, term(19)) ) TYPE=MyISAM CHARSET=utf8; Warnings: Warning 1287 'TYPE=storage_engine' is deprecated; use 'ENGINE=storage_engine' instead INSERT INTO t1 set list_id = 1, term = "testtest"; INSERT INTO t1 set list_id = 1, term = "testetest"; INSERT INTO t1 set list_id = 1, term = "testtest"; SELECT id, term FROM t1 where (list_id = 1) AND (term = "testtest"); id term 1 testtest 2 testetest 3 testtest SELECT id, term FROM t1 where (list_id = 1) AND (term = "testetest"); id term 1 testtest 2 testetest 3 testtest SELECT id, term FROM t1 where (list_id = 1) AND (term = "testtest"); id term 1 testtest 2 testetest 3 testtest DROP TABLE t1; mysql-test/t/ctype_utf8.test +20 −0 Original line number Diff line number Diff line Loading @@ -592,3 +592,23 @@ SELECT id FROM t1 WHERE (list_id = 1) AND (term = "letterb"); SELECT id FROM t1 WHERE (list_id = 1) AND (term = "lettera"); SELECT id FROM t1 WHERE (list_id = 1) AND (term = "letterd"); DROP TABLE t1; # # Bug #6043 erratic searching for diacriticals in indexed MyISAM UTF-8 table # SET NAMES latin1; CREATE TABLE t1 ( id int unsigned NOT NULL auto_increment, list_id smallint unsigned NOT NULL, term text NOT NULL, PRIMARY KEY(id), INDEX(list_id, term(19)) ) TYPE=MyISAM CHARSET=utf8; INSERT INTO t1 set list_id = 1, term = "testtest"; INSERT INTO t1 set list_id = 1, term = "testetest"; INSERT INTO t1 set list_id = 1, term = "testtest"; SELECT id, term FROM t1 where (list_id = 1) AND (term = "testtest"); 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; sql/field.cc +6 −6 Original line number Diff line number Diff line Loading @@ -5000,10 +5000,10 @@ String *Field_blob::val_str(String *val_buffer __attribute__((unused)), int Field_blob::cmp(const char *a,uint32 a_length, const char *b, uint32 b_length) { int diff=my_strnncoll(field_charset, (const uchar*)a,min(a_length,b_length), (const uchar*)b,min(a_length,b_length)); return diff ? diff : (int) (a_length - b_length); return field_charset->coll->strnncoll(field_charset, (const uchar*)a, a_length, (const uchar*)b, b_length, 0); } Loading Loading @@ -5087,8 +5087,8 @@ void Field_blob::get_key_image(char *buff,uint length, get_ptr(&blob); uint char_length= length / cs->mbmaxlen; char_length= my_charpos(cs, blob, blob + length, char_length); set_if_smaller(length, char_length); char_length= my_charpos(cs, blob, blob + blob_length, char_length); set_if_smaller(blob_length, char_length); if ((uint32) length > blob_length) { Loading Loading
mysql-test/r/ctype_utf8.result +29 −0 Original line number Diff line number Diff line Loading @@ -750,3 +750,32 @@ SELECT id FROM t1 WHERE (list_id = 1) AND (term = "letterd"); id 4 DROP TABLE t1; SET NAMES latin1; CREATE TABLE t1 ( id int unsigned NOT NULL auto_increment, list_id smallint unsigned NOT NULL, term text NOT NULL, PRIMARY KEY(id), INDEX(list_id, term(19)) ) TYPE=MyISAM CHARSET=utf8; Warnings: Warning 1287 'TYPE=storage_engine' is deprecated; use 'ENGINE=storage_engine' instead INSERT INTO t1 set list_id = 1, term = "testtest"; INSERT INTO t1 set list_id = 1, term = "testetest"; INSERT INTO t1 set list_id = 1, term = "testtest"; SELECT id, term FROM t1 where (list_id = 1) AND (term = "testtest"); id term 1 testtest 2 testetest 3 testtest SELECT id, term FROM t1 where (list_id = 1) AND (term = "testetest"); id term 1 testtest 2 testetest 3 testtest SELECT id, term FROM t1 where (list_id = 1) AND (term = "testtest"); id term 1 testtest 2 testetest 3 testtest DROP TABLE t1;
mysql-test/t/ctype_utf8.test +20 −0 Original line number Diff line number Diff line Loading @@ -592,3 +592,23 @@ SELECT id FROM t1 WHERE (list_id = 1) AND (term = "letterb"); SELECT id FROM t1 WHERE (list_id = 1) AND (term = "lettera"); SELECT id FROM t1 WHERE (list_id = 1) AND (term = "letterd"); DROP TABLE t1; # # Bug #6043 erratic searching for diacriticals in indexed MyISAM UTF-8 table # SET NAMES latin1; CREATE TABLE t1 ( id int unsigned NOT NULL auto_increment, list_id smallint unsigned NOT NULL, term text NOT NULL, PRIMARY KEY(id), INDEX(list_id, term(19)) ) TYPE=MyISAM CHARSET=utf8; INSERT INTO t1 set list_id = 1, term = "testtest"; INSERT INTO t1 set list_id = 1, term = "testetest"; INSERT INTO t1 set list_id = 1, term = "testtest"; SELECT id, term FROM t1 where (list_id = 1) AND (term = "testtest"); 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;
sql/field.cc +6 −6 Original line number Diff line number Diff line Loading @@ -5000,10 +5000,10 @@ String *Field_blob::val_str(String *val_buffer __attribute__((unused)), int Field_blob::cmp(const char *a,uint32 a_length, const char *b, uint32 b_length) { int diff=my_strnncoll(field_charset, (const uchar*)a,min(a_length,b_length), (const uchar*)b,min(a_length,b_length)); return diff ? diff : (int) (a_length - b_length); return field_charset->coll->strnncoll(field_charset, (const uchar*)a, a_length, (const uchar*)b, b_length, 0); } Loading Loading @@ -5087,8 +5087,8 @@ void Field_blob::get_key_image(char *buff,uint length, get_ptr(&blob); uint char_length= length / cs->mbmaxlen; char_length= my_charpos(cs, blob, blob + length, char_length); set_if_smaller(length, char_length); char_length= my_charpos(cs, blob, blob + blob_length, char_length); set_if_smaller(blob_length, char_length); if ((uint32) length > blob_length) { Loading