Bug #24766 | MySQL not able to detect an impossible query | ||
---|---|---|---|
Submitted: | 2 Dec 2006 0:02 | Modified: | 4 Dec 2006 13:07 |
Reporter: | Regi Guardialao | Email Updates: | |
Status: | Can't repeat | Impact on me: | |
Category: | MySQL Server | Severity: | S3 (Non-critical) |
Version: | 5.0.27 | OS: | Linux (Linux (FC5)) |
Assigned to: | CPU Architecture: | Any |
[2 Dec 2006 0:02]
Regi Guardialao
[3 Dec 2006 10:18]
Valeriy Kravchuk
Thank you for a problem report. Sorry, but I was not able to repeat the behaviour described with 5.0.32-BK on Linux: mysql> show create table test1\G *************************** 1. row *************************** Table: test1 Create Table: CREATE TABLE `test1` ( `ID` mediumint(8) unsigned NOT NULL auto_increment, `test` smallint(6) NOT NULL default '0', PRIMARY KEY (`ID`), KEY `test` (`test`) ) ENGINE=MyISAM AUTO_INCREMENT=1572865 DEFAULT CHARSET=latin1 1 row in set (0.02 sec) mysql> show table status like 'test1'\G *************************** 1. row *************************** Name: test1 Engine: MyISAM Version: 10 Row_format: Fixed Rows: 1572864 Avg_row_length: 7 Data_length: 11010048 Max_data_length: 1970324836974591 Index_length: 30999552 Data_free: 0 Auto_increment: 1572865 Create_time: 2006-12-03 10:28:41 Update_time: 2006-12-03 10:30:56 Check_time: NULL Collation: latin1_swedish_ci Checksum: NULL Create_options: Comment: 1 row in set (0.00 sec) mysql> Explain Select * from test1 where test > 1 and test = ''\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: NULL type: NULL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: NULL Extra: Impossible WHERE noticed after reading const tables 1 row in set (0.01 sec) mysql> Explain Select * from test1 where test > 1 and test = 0\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: NULL type: NULL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: NULL Extra: Impossible WHERE 1 row in set (0.00 sec) mysql> select version(); +--------------+ | version() | +--------------+ | 5.0.32-debug | +--------------+ 1 row in set (0.00 sec) How exactly you got that "Using WHERE"?
[4 Dec 2006 13:01]
Regi Guardialao
Sorry I gave you a bad test case. I was quite in a hurry last time. Anyway, my point was that the other query was able to detect an impossible query while the other needed to read the constant table. At any case, it should have been an 'impossible where' right away. Here is the actual table where we discovered the problem of 'Using Where' Hope you can recreate it. Thank you very much for you very fast response. More power to all of you. CREATE TABLE `campaigndetails` ( `campaigndetailid` int(9) unsigned NOT NULL auto_increment, `targetdetailid` int(9) unsigned NOT NULL default '0', `campaignid` int(9) unsigned NOT NULL default '0', `eventid` int(9) unsigned NOT NULL default '0', PRIMARY KEY (`campaigndetailid`), KEY `campaignid` (`campaignid`), KEY `targetdetailid` (`targetdetailid`), KEY `eventid` (`eventid`) ) ENGINE=MyISAM AUTO_INCREMENT=9391989 DEFAULT CHARSET=latin1 show table status like 'campaigndetails'\G; *************************** 1. row *************************** Name: campaigndetails Engine: MyISAM Version: 9 Row_format: Fixed Rows: 4790857 Avg_row_length: 17 Data_length: 81444569 Max_data_length: 73014444031 Index_length: 158735360 Data_free: 0 Auto_increment: 9391990 Create_time: 2006-05-04 16:31:50 Update_time: 2006-12-04 04:57:47 Check_time: 2006-12-04 03:25:05 Collation: latin1_swedish_ci Checksum: NULL Create_options: explain select * from campaigndetails where eventid > 0 and eventid = ''\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: campaigndetails type: ref possible_keys: eventid key: eventid key_len: 4 ref: const rows: 2197412 Extra: Using where 1 row in set, 1 warning (0.00 sec)
[4 Dec 2006 13:07]
Regi Guardialao
Sorry again. Forgot to add: show index from campaigndetails\G *************************** 1. row *************************** Table: campaigndetails Non_unique: 0 Key_name: PRIMARY Seq_in_index: 1 Column_name: campaigndetailid Collation: A Cardinality: 4790859 Sub_part: NULL Packed: NULL Null: Index_type: BTREE Comment: *************************** 2. row *************************** Table: campaigndetails Non_unique: 1 Key_name: campaignid Seq_in_index: 1 Column_name: campaignid Collation: A Cardinality: 2211 Sub_part: NULL Packed: NULL Null: Index_type: BTREE Comment: *************************** 3. row *************************** Table: campaigndetails Non_unique: 1 Key_name: targetdetailid Seq_in_index: 1 Column_name: targetdetailid Collation: A Cardinality: 4790859 Sub_part: NULL Packed: NULL Null: Index_type: BTREE Comment: *************************** 4. row *************************** Table: campaigndetails Non_unique: 1 Key_name: eventid Seq_in_index: 1 Column_name: eventid Collation: A Cardinality: 2395429 Sub_part: NULL Packed: NULL Null: Index_type: BTREE Comment: 4 rows in set (0.00 sec) Thanks Again!