Commit 55420e98 authored by unknown's avatar unknown
Browse files

ctype_innodb_like.inc:

  New BitKeeper file ``mysql-test/include/ctype_innodb_like.inc''
Many files:
  bug#11650: LIKE pattern matching using prefix index doesn't return correct result
  min and max values were too long in the case of prefix key.
  Fix my_like_range functions not to exceed prefix length.
ctype_innodb_like.inc:
  new file


mysql-test/r/ctype_big5.result:
  bug#11650: LIKE pattern matching using prefix index doesn't return correct result
  min and max values were too long in the case of prefix key.
  Fix my_like_range functions not to exceed prefix length.
mysql-test/r/ctype_cp932.result:
  bug#11650: LIKE pattern matching using prefix index doesn't return correct result
  min and max values were too long in the case of prefix key.
  Fix my_like_range functions not to exceed prefix length.
mysql-test/r/ctype_sjis.result:
  bug#11650: LIKE pattern matching using prefix index doesn't return correct result
  min and max values were too long in the case of prefix key.
  Fix my_like_range functions not to exceed prefix length.
mysql-test/r/ctype_ujis.result:
  bug#11650: LIKE pattern matching using prefix index doesn't return correct result
  min and max values were too long in the case of prefix key.
  Fix my_like_range functions not to exceed prefix length.
mysql-test/t/ctype_big5.test:
  bug#11650: LIKE pattern matching using prefix index doesn't return correct result
  min and max values were too long in the case of prefix key.
  Fix my_like_range functions not to exceed prefix length.
mysql-test/t/ctype_cp932.test:
  bug#11650: LIKE pattern matching using prefix index doesn't return correct result
  min and max values were too long in the case of prefix key.
  Fix my_like_range functions not to exceed prefix length.
mysql-test/t/ctype_sjis.test:
  bug#11650: LIKE pattern matching using prefix index doesn't return correct result
  min and max values were too long in the case of prefix key.
  Fix my_like_range functions not to exceed prefix length.
mysql-test/t/ctype_ujis.test:
  bug#11650: LIKE pattern matching using prefix index doesn't return correct result
  min and max values were too long in the case of prefix key.
  Fix my_like_range functions not to exceed prefix length.
strings/ctype-big5.c:
  bug#11650: LIKE pattern matching using prefix index doesn't return correct result
  min and max values were too long in the case of prefix key.
  Fix my_like_range functions not to exceed prefix length.
strings/ctype-cp932.c:
  bug#11650: LIKE pattern matching using prefix index doesn't return correct result
  min and max values were too long in the case of prefix key.
  Fix my_like_range functions not to exceed prefix length.
strings/ctype-gbk.c:
  bug#11650: LIKE pattern matching using prefix index doesn't return correct result
  min and max values were too long in the case of prefix key.
  Fix my_like_range functions not to exceed prefix length.
strings/ctype-simple.c:
  bug#11650: LIKE pattern matching using prefix index doesn't return correct result
  min and max values were too long in the case of prefix key.
  Fix my_like_range functions not to exceed prefix length.
strings/ctype-sjis.c:
  bug#11650: LIKE pattern matching using prefix index doesn't return correct result
  min and max values were too long in the case of prefix key.
  Fix my_like_range functions not to exceed prefix length.
mysql-test/include/ctype_innodb_like.inc:
  New BitKeeper file ``mysql-test/include/ctype_innodb_like.inc''
parent e0df26b1
Loading
Loading
Loading
Loading
+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;
+44 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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 ('');
+44 −0
Original line number Diff line number Diff line
@@ -8586,6 +8586,28 @@ cp932_japanese_ci 6109
cp932_japanese_ci	61
cp932_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)
cp932_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='cp932_bin';
create table t1 select repeat('a',4000) a;
delete from t1;
@@ -8596,3 +8618,25 @@ cp932_bin 6109
cp932_bin	61
cp932_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)
cp932_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;
+44 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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('佐淘 \圭')
+44 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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;
Loading