diff --git a/mysql-test/r/func_like.result b/mysql-test/r/func_like.result index f90e694f5f0..cf07ba88477 100644 --- a/mysql-test/r/func_like.result +++ b/mysql-test/r/func_like.result @@ -37,3 +37,70 @@ select * from t1 where a like "%abc\d%"; a abcd drop table t1; +SET NAMES koi8r; +CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET koi8r); +INSERT INTO t1 VALUES ('фыва'),('Фыва'),('фЫва'),('фыВа'),('фывА'),('ФЫВА'); +INSERT INTO t1 VALUES ('фывапролдж'),('Фывапролдж'),('фЫвапролдж'),('фыВапролдж'); +INSERT INTO t1 VALUES ('фывАпролдж'),('фываПролдж'),('фывапРолдж'),('фывапрОлдж'); +INSERT INTO t1 VALUES ('фывапроЛдж'),('фывапролДж'),('фывапролдЖ'),('ФЫВАПРОЛДЖ'); +SELECT * FROM t1 WHERE a LIKE '%фЫва%'; +a +фыва +Фыва +фЫва +фыВа +фывА +ФЫВА +фывапролдж +Фывапролдж +фЫвапролдж +фыВапролдж +фывАпролдж +фываПролдж +фывапРолдж +фывапрОлдж +фывапроЛдж +фывапролДж +фывапролдЖ +ФЫВАПРОЛДЖ +SELECT * FROM t1 WHERE a LIKE '%фЫв%'; +a +фыва +Фыва +фЫва +фыВа +фывА +ФЫВА +фывапролдж +Фывапролдж +фЫвапролдж +фыВапролдж +фывАпролдж +фываПролдж +фывапРолдж +фывапрОлдж +фывапроЛдж +фывапролДж +фывапролдЖ +ФЫВАПРОЛДЖ +SELECT * FROM t1 WHERE a LIKE 'фЫва%'; +a +фыва +Фыва +фЫва +фыВа +фывА +ФЫВА +фывапролдж +Фывапролдж +фЫвапролдж +фыВапролдж +фывАпролдж +фываПролдж +фывапРолдж +фывапрОлдж +фывапроЛдж +фывапролДж +фывапролдЖ +ФЫВАПРОЛДЖ +DROP TABLE t1; diff --git a/mysql-test/t/func_like.test b/mysql-test/t/func_like.test index 90b376e34df..0cd85385df4 100644 --- a/mysql-test/t/func_like.test +++ b/mysql-test/t/func_like.test @@ -24,3 +24,23 @@ select * from t1 where a like "%abcd%"; select * from t1 where a like "%abc\d%"; drop table t1; + + +# +# Test like with non-default character set +# + +SET NAMES koi8r; + +CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET koi8r); + +INSERT INTO t1 VALUES ('фыва'),('Фыва'),('фЫва'),('фыВа'),('фывА'),('ФЫВА'); +INSERT INTO t1 VALUES ('фывапролдж'),('Фывапролдж'),('фЫвапролдж'),('фыВапролдж'); +INSERT INTO t1 VALUES ('фывАпролдж'),('фываПролдж'),('фывапРолдж'),('фывапрОлдж'); +INSERT INTO t1 VALUES ('фывапроЛдж'),('фывапролДж'),('фывапролдЖ'),('ФЫВАПРОЛДЖ'); + +SELECT * FROM t1 WHERE a LIKE '%фЫва%'; +SELECT * FROM t1 WHERE a LIKE '%фЫв%'; +SELECT * FROM t1 WHERE a LIKE 'фЫва%'; + +DROP TABLE t1; diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 7d8da16338b..642be5491aa 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -2139,7 +2139,7 @@ bool Item_func_like::turboBM_matches(const char* text, int text_len) const int shift = pattern_len; int j = 0; int u = 0; - CHARSET_INFO *cs=system_charset_info; // QQ Needs to be fixed + CHARSET_INFO *cs= cmp.cmp_collation.collation; // QQ Needs to be fixed const int plm1= pattern_len - 1; const int tlmpl= text_len - pattern_len;