Bug #8976 | INDEX on a char column causes problems with like operator | ||
---|---|---|---|
Submitted: | 5 Mar 2005 10:38 | Modified: | 6 Mar 2005 5:48 |
Reporter: | Gleb Paharenko | Email Updates: | |
Status: | Can't repeat | Impact on me: | |
Category: | MySQL Server | Severity: | S3 (Non-critical) |
Version: | 4.1.10 | OS: | Linux (Linux) |
Assigned to: | CPU Architecture: | Any |
[5 Mar 2005 10:38]
Gleb Paharenko
[5 Mar 2005 10:40]
Gleb Paharenko
More information mysql> show variables like '%char%'; +--------------------------+------------------------------------------------------------------------------+ | Variable_name | Value | +--------------------------+------------------------------------------------------------------------------+ | character_set_client | cp1251 | | character_set_connection | cp1251 | | character_set_database | cp1251 | | character_set_results | cp1251 | | character_set_server | cp1251 | | character_set_system | utf8 | | character_sets_dir | /home/gleb/mysqls/mysql-debug-4.1.10-pc-linux-gnu-i686/share/mysql/charsets/ | +--------------------------+------------------------------------------------------------------------------+ mysql> show variables like '%col%'; +----------------------+------------+ | Variable_name | Value | +----------------------+------------+ | collation_connection | cp1251_bin | | collation_database | cp1251_bin | | collation_server | cp1251_bin |
[5 Mar 2005 15:14]
Artem Kuchin
Just in case. I have tried this: mysql> select * from voc2 where word like BINARY 'f%'; and got Empty set (0.01 sec) BUT select * from voc2 where binary word like 'f%'; returns +----+--------+---------+ | id | word | counter | +----+--------+---------+ | 1 | falama | 1 | | 3 | folka | 1 | +----+--------+---------+ 2 rows in set (0.00 sec) However, select * from voc2 where binary word like 'f%'; is not practically usable because it does not use indices at all (as explain shows) and vocabulary table has almost a million records. I'd say THIS IS A VERY CRITICAL bug, because all searches in all our web engines are broken now after provider upgraded to mysql 4.1. This must be fixed ASAP.
[6 Mar 2005 5:37]
MySQL Verification Team
I wasn't able to repeat the behavior reported with the latest BK source: mysql> use o; Database changed mysql> CREATE TABLE voc2 ( -> id int(10) unsigned NOT NULL default '0', -> word char(32) binary NOT NULL default '', -> counter int(10) unsigned NOT NULL default '0', -> PRIMARY KEY (id), -> UNIQUE KEY i_vocabulary_word (word) -> ) TYPE=MyISAM; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> mysql> insert into voc2 values(1,'falama',1); Query OK, 1 row affected (0.01 sec) mysql> insert into voc2 values(2,'lagraf',1); Query OK, 1 row affected (0.00 sec) mysql> insert into voc2 values(3,'folka',1); Query OK, 1 row affected (0.00 sec) mysql> insert into voc2 values(4,'pofik',1); Query OK, 1 row affected (0.00 sec) mysql> select * from voc2 where word like 'f%'; +----+--------+---------+ | id | word | counter | +----+--------+---------+ | 1 | falama | 1 | | 3 | folka | 1 | +----+--------+---------+ 2 rows in set (0.00 sec) mysql> select * from voc2 where binary word like 'f%'; +----+--------+---------+ | id | word | counter | +----+--------+---------+ | 1 | falama | 1 | | 3 | folka | 1 | +----+--------+---------+ 2 rows in set (0.00 sec) mysql> show variables like '%char%'; +--------------------------+--------------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------------+ | character_set_client | cp1251 | | character_set_connection | cp1251 | | character_set_database | cp1251 | | character_set_results | cp1251 | | character_set_server | cp1251 | | character_set_system | utf8 | | character_sets_dir | /home/miguel/dbs/4.1/share/mysql/charsets/ | +--------------------------+--------------------------------------------+ 7 rows in set (0.00 sec) mysql> show variables like "%collation%"; +----------------------+------------+ | Variable_name | Value | +----------------------+------------+ | collation_connection | cp1251_bin | | collation_database | cp1251_bin | | collation_server | cp1251_bin | +----------------------+------------+ 3 rows in set (0.00 sec) mysql> select version(); +------------------+ | version() | +------------------+ | 4.1.11-debug-log | +------------------+ 1 row in set (0.00 sec)
[6 Mar 2005 5:48]
MySQL Verification Team
In my last post I got a warning in the create table statement. Below it: mysql> show warnings\G *************************** 1. row *************************** Level: Warning Code: 1287 Message: 'TYPE=storage_engine' is deprecated; use 'ENGINE=storage_engine' instead 1 row in set (0.00 sec) so the warning not affects the issue.