forked from google/mysql-protobuf
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bug #11755818 : LIKE DOESN'T MATCH WHEN CP932_BIN/SJIS_BIN
COLLATIONS ARE USED. ISSUE : ------- Code points of HALF WIDTH KATAKANA in SJIS/CP932 range from A1 to DF. In function my_wildcmp_mb_bin_impl while comparing such single byte code points, there is a code which compares signed character with unsigned character. Because of this, comparisons of two same code points representing a HALF WIDTH KATAKANA character always fails. Solution: --------- A code point of HALF WIDTH KATAKANA at-least need 8 bits. Promoting the variable from uchar to int will fix the issue.
- Loading branch information
Showing
3 changed files
with
66 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
# | ||
# Bug #11755818 LIKE DOESN'T MATCH WHEN CP932_BIN/SJIS_BIN COLLATIONS ARE | ||
# USED. | ||
# | ||
SET @old_character_set_client= @@character_set_client; | ||
SET @old_character_set_connection= @@character_set_connection; | ||
SET @old_character_set_results= @@character_set_results; | ||
SET character_set_client= 'utf8'; | ||
SET character_set_connection= 'utf8'; | ||
SET character_set_results= 'utf8'; | ||
CREATE TABLE t1 (a VARCHAR(10) COLLATE cp932_bin); | ||
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 | ||
カカ | ||
ALTER TABLE t1 MODIFY a VARCHAR(100) COLLATE sjis_bin; | ||
SELECT * FROM t1 WHERE a LIKE '%カ'; | ||
a | ||
カカ | ||
SELECT * FROM t1 WHERE a LIKE '_カ'; | ||
a | ||
カカ | ||
SELECT * FROM t1 WHERE a LIKE '%_カ'; | ||
a | ||
カカ | ||
DROP TABLE t1; | ||
SET @@character_set_client= @old_character_set_client; | ||
SET @@character_set_connection= @old_character_set_connection; | ||
SET @@character_set_results= @old_character_set_results; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
-- source include/have_cp932.inc | ||
--echo # | ||
--echo # Bug #11755818 LIKE DOESN'T MATCH WHEN CP932_BIN/SJIS_BIN COLLATIONS ARE | ||
--echo # USED. | ||
--echo # | ||
|
||
SET @old_character_set_client= @@character_set_client; | ||
SET @old_character_set_connection= @@character_set_connection; | ||
SET @old_character_set_results= @@character_set_results; | ||
SET character_set_client= 'utf8'; | ||
SET character_set_connection= 'utf8'; | ||
SET character_set_results= 'utf8'; | ||
|
||
CREATE TABLE t1 (a VARCHAR(10) COLLATE cp932_bin); | ||
INSERT INTO t1 VALUES('カカ'); | ||
SELECT * FROM t1 WHERE a LIKE '%カ'; | ||
SELECT * FROM t1 WHERE a LIKE '_カ'; | ||
SELECT * FROM t1 WHERE a LIKE '%_カ'; | ||
|
||
ALTER TABLE t1 MODIFY a VARCHAR(100) COLLATE sjis_bin; | ||
SELECT * FROM t1 WHERE a LIKE '%カ'; | ||
SELECT * FROM t1 WHERE a LIKE '_カ'; | ||
SELECT * FROM t1 WHERE a LIKE '%_カ'; | ||
DROP TABLE t1; | ||
|
||
## Reset to initial values | ||
SET @@character_set_client= @old_character_set_client; | ||
SET @@character_set_connection= @old_character_set_connection; | ||
SET @@character_set_results= @old_character_set_results; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters