Bug #44855 | Incorrect results with multiple indexes on innodb table | ||
---|---|---|---|
Submitted: | 13 May 2009 21:11 | Modified: | 25 Jun 2009 7:10 |
Reporter: | Jess Balint | Email Updates: | |
Status: | Duplicate | Impact on me: | |
Category: | MySQL Server: Optimizer | Severity: | S2 (Serious) |
Version: | 6.0.10/6.0.12 | OS: | Windows |
Assigned to: | CPU Architecture: | Any |
[13 May 2009 21:11]
Jess Balint
[13 May 2009 21:12]
Jess Balint
simplest test
Attachment: a.sql (application/octet-stream, text), 458 bytes.
[13 May 2009 21:12]
Jess Balint
other test
Attachment: a1.sql (application/octet-stream, text), 757 bytes.
[13 May 2009 21:12]
Jess Balint
other test
Attachment: a3.sql (application/octet-stream, text), 565 bytes.
[13 May 2009 21:12]
Jess Balint
other test
Attachment: a4.sql (application/octet-stream, text), 458 bytes.
[13 May 2009 21:29]
MySQL Verification Team
c:\dbs>c:\dbs\6.0\bin\mysql -uroot --port=3600 --prompt="mysql 6.0 > " Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 6.0.12-alpha-Win X64-log Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql 6.0 > create database r5; Query OK, 1 row affected (0.06 sec) mysql 6.0 > use r5 Database changed mysql 6.0 > CREATE TABLE test ( -> field_1 int(18) NOT NULL auto_increment, -> field_3 varchar(12) default NULL, -> field_6 int default NULL, -> field_9 datetime default NULL, -> field_10 int(18) NOT NULL default '0', -> PRIMARY KEY (field_1), -> KEY (field_3), -> KEY (field_6,field_10,field_9)) -> DEFAULT CHARSET=latin1 ENGINE = InnoDB; Query OK, 0 rows affected (0.30 sec) mysql 6.0 > mysql 6.0 > INSERT INTO test VALUES (15,'FRL',0,NULL,0),(16,'FRL',0,NULL,0); Query OK, 2 rows affected (0.12 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql 6.0 > mysql 6.0 > select field_10, field_3, field_1 from test where field_3 = 'FRL'; +----------+---------+---------+ | field_10 | field_3 | field_1 | +----------+---------+---------+ | 0 | FRL | 15 | | 0 | NULL | 16 | +----------+---------+---------+ 2 rows in set (0.00 sec) mysql 6.0 > alter table test engine MyISAM; Query OK, 2 rows affected (0.31 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql 6.0 > select field_10, field_3, field_1 from test where field_3 = 'FRL'; +----------+---------+---------+ | field_10 | field_3 | field_1 | +----------+---------+---------+ | 0 | FRL | 15 | | 0 | FRL | 16 | +----------+---------+---------+ 2 rows in set (0.00 sec) mysql 6.0 >
[13 May 2009 21:38]
MySQL Verification Team
Thank you for the bug report. 5.1 isn't affected by this bug: c:\dbs>c:\dbs\5.1\bin\mysql -uroot --port=3510 --prompt="mysql 5.1 >" Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.1.35-Win X64 revno: 2853-log Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the current input statement mysql 5.1 >create database r5; Query OK, 1 row affected (0.01 sec) mysql 5.1 >use r5 Database changed mysql 5.1 >CREATE TABLE test ( -> field_1 int(18) NOT NULL auto_increment, -> field_3 varchar(12) default NULL, -> field_6 int default NULL, -> field_9 datetime default NULL, -> field_10 int(18) NOT NULL default '0', -> PRIMARY KEY (field_1), -> KEY (field_3), -> KEY (field_6,field_10,field_9)) -> DEFAULT CHARSET=latin1 ENGINE = InnoDB; Query OK, 0 rows affected (0.17 sec) mysql 5.1 > mysql 5.1 >INSERT INTO test VALUES (15,'FRL',0,NULL,0),(16,'FRL',0,NULL,0); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql 5.1 > mysql 5.1 >select field_10, field_3, field_1 from test where field_3 = 'FRL'; +----------+---------+---------+ | field_10 | field_3 | field_1 | +----------+---------+---------+ | 0 | FRL | 15 | | 0 | FRL | 16 | +----------+---------+---------+ 2 rows in set (0.00 sec)
[15 May 2009 20:26]
Calvin Sun
This appears to be another index condition pushdown bug: C:\MySQL\MySQL Server 6.0\bin>mysql --user=root --password=mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 6.0.10-alpha-community MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> use r5 Database changed mysql> set engine_condition_pushdown=0; Query OK, 0 rows affected (0.00 sec) mysql> select field_10, field_3, field_1 from test where field_3 = 'FRL'; +----------+---------+---------+ | field_10 | field_3 | field_1 | +----------+---------+---------+ | 0 | FRL | 15 | | 0 | FRL | 16 | +----------+---------+---------+ 2 rows in set (0.00 sec) mysql> exit Bye C:\MySQL\MySQL Server 6.0\bin>mysql --user=root --password=mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 6.0.10-alpha-community MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> use r5 Database changed mysql> select @@engine_condition_pushdown; +-----------------------------+ | @@engine_condition_pushdown | +-----------------------------+ | 1 | +-----------------------------+ 1 row in set (0.00 sec) mysql> select field_10, field_3, field_1 from test where field_3 = 'FRL'; +----------+---------+---------+ | field_10 | field_3 | field_1 | +----------+---------+---------+ | 0 | NULL | 15 | | 0 | FRL | 16 | +----------+---------+---------+ 2 rows in set (0.00 sec) mysql>
[25 Jun 2009 7:10]
Sanjay Manwani
There is already an "Umbrella" bug for MRR http://bugs.mysql.com/45029 closing this as a duplicate of that.