Bug #24297 | LOWER() fails when used together with CHAR() | ||
---|---|---|---|
Submitted: | 14 Nov 2006 13:48 | Modified: | 16 Nov 2006 14:35 |
Reporter: | Paul Dodd | Email Updates: | |
Status: | Not a Bug | Impact on me: | |
Category: | MySQL Server | Severity: | S3 (Non-critical) |
Version: | 5.0.30-BK, 5.0.27-community-nt | OS: | Linux (Linux, windows 2000) |
Assigned to: | CPU Architecture: | Any | |
Tags: | char, LOWER |
[14 Nov 2006 13:48]
Paul Dodd
[14 Nov 2006 13:51]
Paul Dodd
better synopsis
[14 Nov 2006 14:01]
Andrey Hristov
Bug squad, please verify on 4.1. I have the following on 5.0 and 5.1 Your MySQL connection id is 1 to server version: 5.0.29-valgrind-max-debug-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> SELECT LOWER(CHAR(ORD('A'))); +-----------------------+ | LOWER(CHAR(ORD('A'))) | +-----------------------+ | A | +-----------------------+ 1 row in set (0.03 sec) Your MySQL connection id is 1 to server version: 5.1.13-beta-valgrind-max-debug-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> SELECT LOWER(CHAR(ORD('A'))); +-----------------------+ | LOWER(CHAR(ORD('A'))) | +-----------------------+ | A | +-----------------------+ 1 row in set (0.08 sec)
[14 Nov 2006 14:01]
Valeriy Kravchuk
Thank you for a bug report. Verified just as described with 5.0.30-BK on Linux: openxs@suse:~/dbs/5.0> bin/mysql -uroot test Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.0.30-debug Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> SELECT LOWER(CHAR(ORD('A'))); +-----------------------+ | LOWER(CHAR(ORD('A'))) | +-----------------------+ | A | +-----------------------+ 1 row in set (0.02 sec) mysql> SELECT LOWER(CHAR(ORD('a'))); +-----------------------+ | LOWER(CHAR(ORD('a'))) | +-----------------------+ | a | +-----------------------+ 1 row in set (0.00 sec) mysql> show variables like 'char%'; +--------------------------+--------------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /home/openxs/dbs/5.0/share/mysql/charsets/ | +--------------------------+--------------------------------------------+ 8 rows in set (0.00 sec) mysql> SELECT LOWER('A'); +------------+ | LOWER('A') | +------------+ | a | +------------+ 1 row in set (0.00 sec) mysql> SELECT CHAR(ORD('A')); +----------------+ | CHAR(ORD('A')) | +----------------+ | A | +----------------+ 1 row in set (0.00 sec)
[14 Nov 2006 14:05]
Andrey Hristov
4.1 is not affected: mysql> SELECT LOWER(CHAR(ORD('a'))); +-----------------------+ | LOWER(CHAR(ORD('a'))) | +-----------------------+ | a | +-----------------------+
[16 Nov 2006 14:35]
Sergei Golubchik
Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://dev.mysql.com/doc/ and the instructions on how to report a bug at http://bugs.mysql.com/how-to-report.php This is expected behavior. Try SELECT CHARSET(CHAR(ORD('A'))) CHAR() function returns a string in a binary character set. Characters in this charset are byte values, they are not letters, and the concept of "letter case" is not applicable to them.