Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.7(EOL)
-
None
Description
Functions UPPER() and LOWER() erroneously translate charcters in the range U+0700..U+07FF to U+0600..U+06FF in combination with the collation xxx_unicode_520_ci:
DELIMITER $$
|
BEGIN NOT ATOMIC |
DECLARE ch CHAR(32) CHARACTER SET ucs2 COLLATE ucs2_unicode_520_ci; |
FOR i IN 0x700..0x7FF |
DO
|
SET ch= CHAR(i USING ucs2); |
SELECT HEX(ch), HEX(LOWER(ch)), HEX(UPPER(ch)); |
END FOR; |
END; |
$$
|
DELIMITER ;
|
+---------+----------------+----------------+
|
| HEX(ch) | HEX(LOWER(ch)) | HEX(UPPER(ch)) |
|
+---------+----------------+----------------+
|
| 0700 | 0600 | 0600 |
|
+---------+----------------+----------------+
|
1 row in set (0.001 sec)
|
|
+---------+----------------+----------------+
|
| HEX(ch) | HEX(LOWER(ch)) | HEX(UPPER(ch)) |
|
+---------+----------------+----------------+
|
| 0701 | 0601 | 0601 |
|
+---------+----------------+----------------+
|
1 row in set (0.001 sec)
|
|
+---------+----------------+----------------+
|
| HEX(ch) | HEX(LOWER(ch)) | HEX(UPPER(ch)) |
|
+---------+----------------+----------------+
|
| 0702 | 0602 | 0602 |
|
+---------+----------------+----------------+
|
1 row in set (0.001 sec)
|
|
...
|
|
+---------+----------------+----------------+
|
| HEX(ch) | HEX(LOWER(ch)) | HEX(UPPER(ch)) |
|
+---------+----------------+----------------+
|
| 07FE | 06FE | 06FE |
|
+---------+----------------+----------------+
|
1 row in set (0.017 sec)
|
|
+---------+----------------+----------------+
|
| HEX(ch) | HEX(LOWER(ch)) | HEX(UPPER(ch)) |
|
+---------+----------------+----------------+
|
| 07FF | 06FF | 06FF |
|
+---------+----------------+----------------+
|
Attachments
Issue Links
- blocks
-
MDEV-30577 Case folding for uca1400 collations is not up to date
- Closed
- is caused by
-
MDEV-26572 Improve simple multibyte collation performance on the ASCII range
- Closed
- relates to
-
MDEV-31340 Remove MY_COLLATION_HANDLER::strcasecmp()
- Closed