1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

Fix bug#14583

When InnoDB compares varchar field in ucs2 with given key using bin collation,
it calls my_strnncollsp_ucs2_bin() to perform comparison.
Because field length was lesser than length of key field should be padded
with trailing spaces in order to get correct result. 
Because  my_strnncollsp_ucs2_bin() was calling my_strnncollp_ucs2_bin(), which
doesn't pads field, wrong comparison result was returned. This results in
wrong result set.

my_strnncollsp_ucs2_bin() now compares fields like my_strnncollsp_ucs2 do,
but using binary collation.


mysql-test/t/ctype_ucs.test:
  Test case for bug#14583  Wrong my_strnncollsp_ucs2_bin() behaviour results in skipping
  correct records.
mysql-test/r/ctype_ucs.result:
  Test case for bug#14583  Wrong my_strnncollsp_ucs2_bin() behaviour results in skipping correct records.
strings/ctype-ucs2.c:
  Fix bug#14583 Wrong my_strnncollsp_ucs2_bin() behaviour results in skipping
  correct records.my_strnncollsp_ucs2_bin() now compares fields like my_strnncollsp_ucs2 do,
  but using binary collation.
This commit is contained in:
unknown
2005-12-27 20:16:59 +03:00
parent c2ac089167
commit 9a128b97d1
3 changed files with 54 additions and 2 deletions

View File

@ -677,3 +677,10 @@ hex(a)
005B
803D
drop table t1;
create table t1(f1 varchar(5) CHARACTER SET ucs2 COLLATE ucs2_bin NOT NULL) engine=InnoDB;
insert into t1 values('a');
create index t1f1 on t1(f1);
select f1 from t1 where f1 like 'a%';
f1
a
drop table t1;

View File

@ -419,4 +419,12 @@ insert into t1 values (0x005b);
select hex(a) from t1;
drop table t1;
#
# Bug #14583 Bug on query using a LIKE on indexed field with ucs2_bin collation
#
create table t1(f1 varchar(5) CHARACTER SET ucs2 COLLATE ucs2_bin NOT NULL) engine=InnoDB;
insert into t1 values('a');
create index t1f1 on t1(f1);
select f1 from t1 where f1 like 'a%';
drop table t1;
# End of 4.1 tests