Bug #72745 | Wrong Results When Using Intersect | ||
---|---|---|---|
Submitted: | 26 May 2014 4:28 | Modified: | 26 May 2014 5:37 |
Reporter: | Will Fong | Email Updates: | |
Status: | Verified | Impact on me: | |
Category: | MySQL Server: Optimizer | Severity: | S2 (Serious) |
Version: | 5.5.37, 5.5.38 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | index merge, intersect |
[26 May 2014 4:28]
Will Fong
[26 May 2014 4:28]
Will Fong
Schema
Attachment: TAB1.sql.bz2 (application/x-bzip, text), 208.87 KiB.
[26 May 2014 5:37]
MySQL Verification Team
Hello Will, Thank you for the bug report and test case. Verified as described. Thanks, Umesh
[26 May 2014 5:45]
MySQL Verification Team
// 5.5.38 - Affected mysql> select version(); +------------------+ | version() | +------------------+ | 5.5.38-debug-log | mysql> SELECT * FROM tab1 WHERE B=2014 AND D=2 AND E='06' AND C = 'K' AND F = '0' AND G = '20' AND M = '0'; +-------+------+---+---+----+---+----+----+-------+---------------------+-------+---------------------+---+ | A | B | C | D | E | F | G | H | I | J | K | L | M | +-------+------+---+---+----+---+----+----+-------+---------------------+-------+---------------------+---+ | 1668 | 2014 | K | 2 | 06 | 0 | 20 | 26 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1674 | 2014 | K | 2 | 06 | 0 | 20 | 28 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1680 | 2014 | K | 2 | 06 | 0 | 20 | 30 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31137 | 2014 | K | 2 | 06 | 0 | 20 | 21 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31140 | 2014 | K | 2 | 06 | 0 | 20 | 24 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31142 | 2014 | K | 2 | 06 | 0 | 20 | 26 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31144 | 2014 | K | 2 | 06 | 0 | 20 | 28 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31146 | 2014 | K | 2 | 06 | 0 | 20 | 30 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | +-------+------+---+---+----+---+----+----+-------+---------------------+-------+---------------------+---+ 8 rows in set (0.03 sec) mysql> SELECT COUNT(*) FROM tab1 WHERE B=2014 AND D=2 AND E='06' AND C = 'K' AND F = '0' AND G = '20' AND M = '0'; +----------+ | COUNT(*) | +----------+ | 20 | +----------+ 1 row in set (0.01 sec) mysql> EXPLAIN SELECT COUNT(*) FROM tab1 WHERE B=2014 AND D=2 AND E='06' AND C = 'K' AND F = '0' AND G = '20' AND M = '0'\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: tab1 type: ref possible_keys: idx_STDT_GR_EXMNT_NO_INF_1,idx_STDT_GR_EXMNT_NO_INF_2,idx_STDT_GR_EXMNT_NO_INF_3,idx_STDT_GR_EXMNT_NO_INF_4,idx_STDT_GR_EXMNT_NO_INF_5,idx_STDT_GR_EXMNT_NO_INF_6,idx_STDT_GR_EXMNT_NO_INF_8,idx_STDT_GR_EXMNT_NO_INF_9,idx_STDT_GR_EXMNT_NO_INF_10,idx_STDT_GR_EXMNT_NO_INF_11 key: idx_STDT_GR_EXMNT_NO_INF_11 key_len: 52 ref: const,const,const,const,const,const,const rows: 24 Extra: Using where; Using index 1 row in set (0.01 sec) mysql> EXPLAIN SELECT * FROM tab1 WHERE B=2014 AND D=2 AND E='06' AND C = 'K' AND F = '0' AND G = '20' AND M = '0'\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: tab1 type: index_merge possible_keys: idx_STDT_GR_EXMNT_NO_INF_1,idx_STDT_GR_EXMNT_NO_INF_2,idx_STDT_GR_EXMNT_NO_INF_3,idx_STDT_GR_EXMNT_NO_INF_4,idx_STDT_GR_EXMNT_NO_INF_5,idx_STDT_GR_EXMNT_NO_INF_6,idx_STDT_GR_EXMNT_NO_INF_8,idx_STDT_GR_EXMNT_NO_INF_9,idx_STDT_GR_EXMNT_NO_INF_10,idx_STDT_GR_EXMNT_NO_INF_11 key: idx_STDT_GR_EXMNT_NO_INF_11,idx_STDT_GR_EXMNT_NO_INF_10,idx_STDT_GR_EXMNT_NO_INF_6,idx_STDT_GR_EXMNT_NO_INF_5 key_len: 52,52,52,36 ref: NULL rows: 3 Extra: Using intersect(idx_STDT_GR_EXMNT_NO_INF_11,idx_STDT_GR_EXMNT_NO_INF_10,idx_STDT_GR_EXMNT_NO_INF_6,idx_STDT_GR_EXMNT_NO_INF_5); Using where 1 row in set (0.01 sec)
[26 May 2014 5:46]
MySQL Verification Team
// 5.6.19 - Not affected mysql> select version(); +-------------------------------------------+ | version() | +-------------------------------------------+ | 5.6.19-enterprise-commercial-advanced-log | +-------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT * FROM tab1 WHERE B=2014 AND D=2 AND E='06' AND C = 'K' AND F = '0' AND G = '20' AND M = '0'; +-------+------+---+---+----+---+----+----+-------+---------------------+-------+---------------------+---+ | A | B | C | D | E | F | G | H | I | J | K | L | M | +-------+------+---+---+----+---+----+----+-------+---------------------+-------+---------------------+---+ | 1668 | 2014 | K | 2 | 06 | 0 | 20 | 26 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1674 | 2014 | K | 2 | 06 | 0 | 20 | 28 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1680 | 2014 | K | 2 | 06 | 0 | 20 | 30 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31137 | 2014 | K | 2 | 06 | 0 | 20 | 21 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31140 | 2014 | K | 2 | 06 | 0 | 20 | 24 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31142 | 2014 | K | 2 | 06 | 0 | 20 | 26 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31144 | 2014 | K | 2 | 06 | 0 | 20 | 28 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31146 | 2014 | K | 2 | 06 | 0 | 20 | 30 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1653 | 2014 | K | 2 | 06 | 0 | 20 | 21 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1677 | 2014 | K | 2 | 06 | 0 | 20 | 29 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31138 | 2014 | K | 2 | 06 | 0 | 20 | 22 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1656 | 2014 | K | 2 | 06 | 0 | 20 | 22 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1662 | 2014 | K | 2 | 06 | 0 | 20 | 24 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31139 | 2014 | K | 2 | 06 | 0 | 20 | 23 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31141 | 2014 | K | 2 | 06 | 0 | 20 | 25 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31143 | 2014 | K | 2 | 06 | 0 | 20 | 27 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31145 | 2014 | K | 2 | 06 | 0 | 20 | 29 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1659 | 2014 | K | 2 | 06 | 0 | 20 | 23 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1665 | 2014 | K | 2 | 06 | 0 | 20 | 25 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1671 | 2014 | K | 2 | 06 | 0 | 20 | 27 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | +-------+------+---+---+----+---+----+----+-------+---------------------+-------+---------------------+---+ 20 rows in set (0.30 sec) mysql> SELECT COUNT(*) FROM tab1 WHERE B=2014 AND D=2 AND E='06' AND C = 'K' AND F = '0' AND G = '20' AND M = '0'; +----------+ | COUNT(*) | +----------+ | 20 | +----------+ 1 row in set (0.00 sec) mysql> EXPLAIN SELECT COUNT(*) FROM tab1 WHERE B=2014 AND D=2 AND E='06' AND C = 'K' AND F = '0' AND G = '20' AND M = '0'\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: tab1 type: ref possible_keys: idx_STDT_GR_EXMNT_NO_INF_1,idx_STDT_GR_EXMNT_NO_INF_2,idx_STDT_GR_EXMNT_NO_INF_3,idx_STDT_GR_EXMNT_NO_INF_4,idx_STDT_GR_EXMNT_NO_INF_5,idx_STDT_GR_EXMNT_NO_INF_6,idx_STDT_GR_EXMNT_NO_INF_8,idx_STDT_GR_EXMNT_NO_INF_9,idx_STDT_GR_EXMNT_NO_INF_10,idx_STDT_GR_EXMNT_NO_INF_11 key: idx_STDT_GR_EXMNT_NO_INF_6 key_len: 52 ref: const,const,const,const,const,const,const rows: 24 Extra: Using where; Using index 1 row in set (0.00 sec) mysql>
[26 May 2014 5:47]
MySQL Verification Team
// 5.7.5 - Not affected mysql> select version(); +----------------------------------------------+ | version() | +----------------------------------------------+ | 5.7.5-m15-enterprise-commercial-advanced-log | +----------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT * FROM tab1 WHERE B=2014 AND D=2 AND E='06' AND C = 'K' AND F = '0' AND G = '20' AND M = '0'; +-------+------+---+---+----+---+----+----+-------+---------------------+-------+---------------------+---+ | A | B | C | D | E | F | G | H | I | J | K | L | M | +-------+------+---+---+----+---+----+----+-------+---------------------+-------+---------------------+---+ | 1668 | 2014 | K | 2 | 06 | 0 | 20 | 26 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1674 | 2014 | K | 2 | 06 | 0 | 20 | 28 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1680 | 2014 | K | 2 | 06 | 0 | 20 | 30 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31137 | 2014 | K | 2 | 06 | 0 | 20 | 21 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31140 | 2014 | K | 2 | 06 | 0 | 20 | 24 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31142 | 2014 | K | 2 | 06 | 0 | 20 | 26 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31144 | 2014 | K | 2 | 06 | 0 | 20 | 28 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31146 | 2014 | K | 2 | 06 | 0 | 20 | 30 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1653 | 2014 | K | 2 | 06 | 0 | 20 | 21 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1677 | 2014 | K | 2 | 06 | 0 | 20 | 29 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31138 | 2014 | K | 2 | 06 | 0 | 20 | 22 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1656 | 2014 | K | 2 | 06 | 0 | 20 | 22 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1662 | 2014 | K | 2 | 06 | 0 | 20 | 24 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31139 | 2014 | K | 2 | 06 | 0 | 20 | 23 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31141 | 2014 | K | 2 | 06 | 0 | 20 | 25 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31143 | 2014 | K | 2 | 06 | 0 | 20 | 27 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 31145 | 2014 | K | 2 | 06 | 0 | 20 | 29 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1659 | 2014 | K | 2 | 06 | 0 | 20 | 23 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1665 | 2014 | K | 2 | 06 | 0 | 20 | 25 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | | 1671 | 2014 | K | 2 | 06 | 0 | 20 | 27 | DUMMY | 2014-05-23 00:00:00 | DUMMY | 2014-05-23 00:00:00 | 0 | +-------+------+---+---+----+---+----+----+-------+---------------------+-------+---------------------+---+ 20 rows in set (0.05 sec) mysql> SELECT COUNT(*) FROM tab1 WHERE B=2014 AND D=2 AND E='06' AND C = 'K' AND F = '0' AND G = '20' AND M = '0'; +----------+ | COUNT(*) | +----------+ | 20 | +----------+ 1 row in set (0.00 sec) mysql> EXPLAIN SELECT COUNT(*) FROM tab1 WHERE B=2014 AND D=2 AND E='06' AND C = 'K' AND F = '0' AND G = '20' AND M = '0'\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: tab1 partitions: P2014207_P2014207sp0,P2014207_P2014207sp1,P2014207_P2014207sp2,P2014207_P2014207sp3,P2014207_P2014207sp4,P2014207_P2014207sp5,P2014207_P2014207sp6,P2014207_P2014207sp7 type: ref possible_keys: idx_STDT_GR_EXMNT_NO_INF_1,idx_STDT_GR_EXMNT_NO_INF_2,idx_STDT_GR_EXMNT_NO_INF_3,idx_STDT_GR_EXMNT_NO_INF_4,idx_STDT_GR_EXMNT_NO_INF_5,idx_STDT_GR_EXMNT_NO_INF_6,idx_STDT_GR_EXMNT_NO_INF_8,idx_STDT_GR_EXMNT_NO_INF_9,idx_STDT_GR_EXMNT_NO_INF_10,idx_STDT_GR_EXMNT_NO_INF_11 key: idx_STDT_GR_EXMNT_NO_INF_6 key_len: 52 ref: const,const,const,const,const,const,const rows: 24 filtered: 100.00 Extra: Using index 1 row in set, 1 warning (0.00 sec) mysql> EXPLAIN SELECT * FROM tab1 WHERE B=2014 AND D=2 AND E='06' AND C = 'K' AND F = '0' AND G = '20' AND M = '0'\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: tab1 partitions: P2014207_P2014207sp0,P2014207_P2014207sp1,P2014207_P2014207sp2,P2014207_P2014207sp3,P2014207_P2014207sp4,P2014207_P2014207sp5,P2014207_P2014207sp6,P2014207_P2014207sp7 type: ref possible_keys: idx_STDT_GR_EXMNT_NO_INF_1,idx_STDT_GR_EXMNT_NO_INF_2,idx_STDT_GR_EXMNT_NO_INF_3,idx_STDT_GR_EXMNT_NO_INF_4,idx_STDT_GR_EXMNT_NO_INF_5,idx_STDT_GR_EXMNT_NO_INF_6,idx_STDT_GR_EXMNT_NO_INF_8,idx_STDT_GR_EXMNT_NO_INF_9,idx_STDT_GR_EXMNT_NO_INF_10,idx_STDT_GR_EXMNT_NO_INF_11 key: idx_STDT_GR_EXMNT_NO_INF_6 key_len: 52 ref: const,const,const,const,const,const,const rows: 24 filtered: 100.00 Extra: NULL 1 row in set, 1 warning (0.00 sec)