Loading mysql-test/include/ctype_innodb_like.inc 0 → 100644 +21 −0 Original line number Diff line number Diff line # # Bug#11650: LIKE pattern matching using prefix index # doesn't return correct result # --disable_warnings # # This query creates a column using # character_set_connection and # collation_connection. # create table t1 engine=innodb select repeat('a',50) as c1; --enable_warnings alter table t1 add index(c1(5)); insert into t1 values ('abcdefg'),('abcde100'),('abcde110'),('abcde111'); select collation(c1) from t1 limit 1; select c1 from t1 where c1 like 'abcdef%' order by c1; select c1 from t1 where c1 like 'abcde1%' order by c1; select c1 from t1 where c1 like 'abcde11%' order by c1; select c1 from t1 where c1 like 'abcde111%' order by c1; drop table t1; mysql-test/r/ctype_big5.result +44 −0 Original line number Diff line number Diff line Loading @@ -67,6 +67,28 @@ big5_chinese_ci 6109 big5_chinese_ci 61 big5_chinese_ci 6120 drop table t1; create table t1 engine=innodb select repeat('a',50) as c1; alter table t1 add index(c1(5)); insert into t1 values ('abcdefg'),('abcde100'),('abcde110'),('abcde111'); select collation(c1) from t1 limit 1; collation(c1) big5_chinese_ci select c1 from t1 where c1 like 'abcdef%' order by c1; c1 abcdefg select c1 from t1 where c1 like 'abcde1%' order by c1; c1 abcde100 abcde110 abcde111 select c1 from t1 where c1 like 'abcde11%' order by c1; c1 abcde110 abcde111 select c1 from t1 where c1 like 'abcde111%' order by c1; c1 abcde111 drop table t1; SET collation_connection='big5_bin'; create table t1 select repeat('a',4000) a; delete from t1; Loading @@ -77,6 +99,28 @@ big5_bin 6109 big5_bin 61 big5_bin 6120 drop table t1; create table t1 engine=innodb select repeat('a',50) as c1; alter table t1 add index(c1(5)); insert into t1 values ('abcdefg'),('abcde100'),('abcde110'),('abcde111'); select collation(c1) from t1 limit 1; collation(c1) big5_bin select c1 from t1 where c1 like 'abcdef%' order by c1; c1 abcdefg select c1 from t1 where c1 like 'abcde1%' order by c1; c1 abcde100 abcde110 abcde111 select c1 from t1 where c1 like 'abcde11%' order by c1; c1 abcde110 abcde111 select c1 from t1 where c1 like 'abcde111%' order by c1; c1 abcde111 drop table t1; SET NAMES big5; CREATE TABLE t1 (a text) character set big5; INSERT INTO t1 VALUES (''); Loading mysql-test/r/ctype_sjis.result +44 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,28 @@ sjis_japanese_ci 6109 sjis_japanese_ci 61 sjis_japanese_ci 6120 drop table t1; create table t1 engine=innodb select repeat('a',50) as c1; alter table t1 add index(c1(5)); insert into t1 values ('abcdefg'),('abcde100'),('abcde110'),('abcde111'); select collation(c1) from t1 limit 1; collation(c1) sjis_japanese_ci select c1 from t1 where c1 like 'abcdef%' order by c1; c1 abcdefg select c1 from t1 where c1 like 'abcde1%' order by c1; c1 abcde100 abcde110 abcde111 select c1 from t1 where c1 like 'abcde11%' order by c1; c1 abcde110 abcde111 select c1 from t1 where c1 like 'abcde111%' order by c1; c1 abcde111 drop table t1; SET collation_connection='sjis_bin'; create table t1 select repeat('a',4000) a; delete from t1; Loading @@ -91,6 +113,28 @@ sjis_bin 6109 sjis_bin 61 sjis_bin 6120 drop table t1; create table t1 engine=innodb select repeat('a',50) as c1; alter table t1 add index(c1(5)); insert into t1 values ('abcdefg'),('abcde100'),('abcde110'),('abcde111'); select collation(c1) from t1 limit 1; collation(c1) sjis_bin select c1 from t1 where c1 like 'abcdef%' order by c1; c1 abcdefg select c1 from t1 where c1 like 'abcde1%' order by c1; c1 abcde100 abcde110 abcde111 select c1 from t1 where c1 like 'abcde11%' order by c1; c1 abcde110 abcde111 select c1 from t1 where c1 like 'abcde111%' order by c1; c1 abcde111 drop table t1; SET NAMES sjis; SELECT HEX('佐淘 \圭') FROM DUAL; HEX('佐淘 \圭') Loading mysql-test/r/ctype_ujis.result +44 −0 Original line number Diff line number Diff line Loading @@ -2217,6 +2217,28 @@ ujis_japanese_ci 6109 ujis_japanese_ci 61 ujis_japanese_ci 6120 drop table t1; create table t1 engine=innodb select repeat('a',50) as c1; alter table t1 add index(c1(5)); insert into t1 values ('abcdefg'),('abcde100'),('abcde110'),('abcde111'); select collation(c1) from t1 limit 1; collation(c1) ujis_japanese_ci select c1 from t1 where c1 like 'abcdef%' order by c1; c1 abcdefg select c1 from t1 where c1 like 'abcde1%' order by c1; c1 abcde100 abcde110 abcde111 select c1 from t1 where c1 like 'abcde11%' order by c1; c1 abcde110 abcde111 select c1 from t1 where c1 like 'abcde111%' order by c1; c1 abcde111 drop table t1; SET collation_connection='ujis_bin'; create table t1 select repeat('a',4000) a; delete from t1; Loading @@ -2227,3 +2249,25 @@ ujis_bin 6109 ujis_bin 61 ujis_bin 6120 drop table t1; create table t1 engine=innodb select repeat('a',50) as c1; alter table t1 add index(c1(5)); insert into t1 values ('abcdefg'),('abcde100'),('abcde110'),('abcde111'); select collation(c1) from t1 limit 1; collation(c1) ujis_bin select c1 from t1 where c1 like 'abcdef%' order by c1; c1 abcdefg select c1 from t1 where c1 like 'abcde1%' order by c1; c1 abcde100 abcde110 abcde111 select c1 from t1 where c1 like 'abcde11%' order by c1; c1 abcde110 abcde111 select c1 from t1 where c1 like 'abcde111%' order by c1; c1 abcde111 drop table t1; mysql-test/t/ctype_big5.test +2 −0 Original line number Diff line number Diff line Loading @@ -14,8 +14,10 @@ SET @test_collation= 'big5_chinese_ci'; SET NAMES big5; SET collation_connection='big5_chinese_ci'; -- source include/ctype_filesort.inc -- source include/ctype_innodb_like.inc SET collation_connection='big5_bin'; -- source include/ctype_filesort.inc -- source include/ctype_innodb_like.inc # # Bugs#9357: TEXT columns break string with special word in BIG5 charset. Loading Loading
mysql-test/include/ctype_innodb_like.inc 0 → 100644 +21 −0 Original line number Diff line number Diff line # # Bug#11650: LIKE pattern matching using prefix index # doesn't return correct result # --disable_warnings # # This query creates a column using # character_set_connection and # collation_connection. # create table t1 engine=innodb select repeat('a',50) as c1; --enable_warnings alter table t1 add index(c1(5)); insert into t1 values ('abcdefg'),('abcde100'),('abcde110'),('abcde111'); select collation(c1) from t1 limit 1; select c1 from t1 where c1 like 'abcdef%' order by c1; select c1 from t1 where c1 like 'abcde1%' order by c1; select c1 from t1 where c1 like 'abcde11%' order by c1; select c1 from t1 where c1 like 'abcde111%' order by c1; drop table t1;
mysql-test/r/ctype_big5.result +44 −0 Original line number Diff line number Diff line Loading @@ -67,6 +67,28 @@ big5_chinese_ci 6109 big5_chinese_ci 61 big5_chinese_ci 6120 drop table t1; create table t1 engine=innodb select repeat('a',50) as c1; alter table t1 add index(c1(5)); insert into t1 values ('abcdefg'),('abcde100'),('abcde110'),('abcde111'); select collation(c1) from t1 limit 1; collation(c1) big5_chinese_ci select c1 from t1 where c1 like 'abcdef%' order by c1; c1 abcdefg select c1 from t1 where c1 like 'abcde1%' order by c1; c1 abcde100 abcde110 abcde111 select c1 from t1 where c1 like 'abcde11%' order by c1; c1 abcde110 abcde111 select c1 from t1 where c1 like 'abcde111%' order by c1; c1 abcde111 drop table t1; SET collation_connection='big5_bin'; create table t1 select repeat('a',4000) a; delete from t1; Loading @@ -77,6 +99,28 @@ big5_bin 6109 big5_bin 61 big5_bin 6120 drop table t1; create table t1 engine=innodb select repeat('a',50) as c1; alter table t1 add index(c1(5)); insert into t1 values ('abcdefg'),('abcde100'),('abcde110'),('abcde111'); select collation(c1) from t1 limit 1; collation(c1) big5_bin select c1 from t1 where c1 like 'abcdef%' order by c1; c1 abcdefg select c1 from t1 where c1 like 'abcde1%' order by c1; c1 abcde100 abcde110 abcde111 select c1 from t1 where c1 like 'abcde11%' order by c1; c1 abcde110 abcde111 select c1 from t1 where c1 like 'abcde111%' order by c1; c1 abcde111 drop table t1; SET NAMES big5; CREATE TABLE t1 (a text) character set big5; INSERT INTO t1 VALUES (''); Loading
mysql-test/r/ctype_sjis.result +44 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,28 @@ sjis_japanese_ci 6109 sjis_japanese_ci 61 sjis_japanese_ci 6120 drop table t1; create table t1 engine=innodb select repeat('a',50) as c1; alter table t1 add index(c1(5)); insert into t1 values ('abcdefg'),('abcde100'),('abcde110'),('abcde111'); select collation(c1) from t1 limit 1; collation(c1) sjis_japanese_ci select c1 from t1 where c1 like 'abcdef%' order by c1; c1 abcdefg select c1 from t1 where c1 like 'abcde1%' order by c1; c1 abcde100 abcde110 abcde111 select c1 from t1 where c1 like 'abcde11%' order by c1; c1 abcde110 abcde111 select c1 from t1 where c1 like 'abcde111%' order by c1; c1 abcde111 drop table t1; SET collation_connection='sjis_bin'; create table t1 select repeat('a',4000) a; delete from t1; Loading @@ -91,6 +113,28 @@ sjis_bin 6109 sjis_bin 61 sjis_bin 6120 drop table t1; create table t1 engine=innodb select repeat('a',50) as c1; alter table t1 add index(c1(5)); insert into t1 values ('abcdefg'),('abcde100'),('abcde110'),('abcde111'); select collation(c1) from t1 limit 1; collation(c1) sjis_bin select c1 from t1 where c1 like 'abcdef%' order by c1; c1 abcdefg select c1 from t1 where c1 like 'abcde1%' order by c1; c1 abcde100 abcde110 abcde111 select c1 from t1 where c1 like 'abcde11%' order by c1; c1 abcde110 abcde111 select c1 from t1 where c1 like 'abcde111%' order by c1; c1 abcde111 drop table t1; SET NAMES sjis; SELECT HEX('佐淘 \圭') FROM DUAL; HEX('佐淘 \圭') Loading
mysql-test/r/ctype_ujis.result +44 −0 Original line number Diff line number Diff line Loading @@ -2217,6 +2217,28 @@ ujis_japanese_ci 6109 ujis_japanese_ci 61 ujis_japanese_ci 6120 drop table t1; create table t1 engine=innodb select repeat('a',50) as c1; alter table t1 add index(c1(5)); insert into t1 values ('abcdefg'),('abcde100'),('abcde110'),('abcde111'); select collation(c1) from t1 limit 1; collation(c1) ujis_japanese_ci select c1 from t1 where c1 like 'abcdef%' order by c1; c1 abcdefg select c1 from t1 where c1 like 'abcde1%' order by c1; c1 abcde100 abcde110 abcde111 select c1 from t1 where c1 like 'abcde11%' order by c1; c1 abcde110 abcde111 select c1 from t1 where c1 like 'abcde111%' order by c1; c1 abcde111 drop table t1; SET collation_connection='ujis_bin'; create table t1 select repeat('a',4000) a; delete from t1; Loading @@ -2227,3 +2249,25 @@ ujis_bin 6109 ujis_bin 61 ujis_bin 6120 drop table t1; create table t1 engine=innodb select repeat('a',50) as c1; alter table t1 add index(c1(5)); insert into t1 values ('abcdefg'),('abcde100'),('abcde110'),('abcde111'); select collation(c1) from t1 limit 1; collation(c1) ujis_bin select c1 from t1 where c1 like 'abcdef%' order by c1; c1 abcdefg select c1 from t1 where c1 like 'abcde1%' order by c1; c1 abcde100 abcde110 abcde111 select c1 from t1 where c1 like 'abcde11%' order by c1; c1 abcde110 abcde111 select c1 from t1 where c1 like 'abcde111%' order by c1; c1 abcde111 drop table t1;
mysql-test/t/ctype_big5.test +2 −0 Original line number Diff line number Diff line Loading @@ -14,8 +14,10 @@ SET @test_collation= 'big5_chinese_ci'; SET NAMES big5; SET collation_connection='big5_chinese_ci'; -- source include/ctype_filesort.inc -- source include/ctype_innodb_like.inc SET collation_connection='big5_bin'; -- source include/ctype_filesort.inc -- source include/ctype_innodb_like.inc # # Bugs#9357: TEXT columns break string with special word in BIG5 charset. Loading