Details
-
Technical task
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
The provided test case is long and looks weird, but I can't remove anything else from it. There are 9 tables in the test, only two of them are involved in the SELECT in question, but removing any previous actions on any of the other tables eliminates the wrong result.
I could not find any differences in valgrind warnings between a "good" and "bad" test case.
Actual result of the test case with LevelDB is an empty set.
Expected result (and actual result with InnoDB and MyISAM):
+------+
|
| v3 |
|
+------+
|
| I |
|
| c |
|
+------+
|
EXPLAIN with LevelDB:
+----+-------------+-------+-------+---------------+------+---------+------------+------+-----------+-------+
|
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
|
+----+-------------+-------+-------+---------------+------+---------+------------+------+-----------+-------+
|
| 1 | SIMPLE | t8 | index | NULL | v3 | 13 | NULL | 1 | 100000.00 | NULL |
|
| 1 | SIMPLE | t4 | ref | v3 | v3 | 13 | test.t8.v3 | 11 | 100.00 | NULL |
|
+----+-------------+-------+-------+---------------+------+---------+------------+------+-----------+-------+
|
+-------+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| Note | 1003 | /* select#1 */ select `test`.`t8`.`v3` AS `v3` from `test`.`t8` left join `test`.`t4` on((`test`.`t8`.`v3` = `test`.`t4`.`v3`)) where 1 order by `test`.`t8`.`v3` desc limit 10 |
|
+-------+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
EXPLAIN with InnoDB:
+----+-------------+-------+-------+---------------+------+---------+------------+------+----------+-------------+
|
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
|
+----+-------------+-------+-------+---------------+------+---------+------------+------+----------+-------------+
|
| 1 | SIMPLE | t8 | index | NULL | v3 | 13 | NULL | 2 | 100.00 | Using index |
|
| 1 | SIMPLE | t4 | ref | v3 | v3 | 13 | test.t8.v3 | 1 | 100.00 | Using index |
|
+----+-------------+-------+-------+---------------+------+---------+------------+------+----------+-------------+
|
+-------+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| Note | 1003 | /* select#1 */ select `test`.`t8`.`v3` AS `v3` from `test`.`t8` left join `test`.`t4` on((`test`.`t8`.`v3` = `test`.`t4`.`v3`)) where 1 order by `test`.`t8`.`v3` desc limit 10 |
|
+-------+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
EXPLAIN with MyISAM:
+----+-------------+-------+-------+---------------+------+---------+------+------+----------+-----------------------------------------------------------------+
|
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
|
+----+-------------+-------+-------+---------------+------+---------+------+------+----------+-----------------------------------------------------------------+
|
| 1 | SIMPLE | t8 | index | NULL | v3 | 13 | NULL | 2 | 100.00 | Using index; Using temporary; Using filesort |
|
| 1 | SIMPLE | t4 | index | v3 | v3 | 13 | NULL | 2 | 100.00 | Using where; Using index; Using join buffer (Block Nested Loop) |
|
+----+-------------+-------+-------+---------------+------+---------+------+------+----------+-----------------------------------------------------------------+
|
+-------+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| Note | 1003 | /* select#1 */ select `test`.`t8`.`v3` AS `v3` from `test`.`t8` left join `test`.`t4` on((`test`.`t8`.`v3` = `test`.`t4`.`v3`)) where 1 order by `test`.`t8`.`v3` desc limit 10 |
|
+-------+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
Test case:
SET storage_engine = LevelDB; |
|
CREATE TABLE t1 ( |
c1 char(8), |
v1 varchar(1024), |
b1 bigint unsigned, |
v2 varchar(10), |
pk char(16), |
v3 varchar(10), |
d1 date, |
i1 int, |
i2 int, |
dt2 datetime,
|
v4 varchar(1024), |
c2 char(8), |
key (c1), |
key (v1), |
key (b1), |
key (v2), |
primary key (pk), |
key (v3), |
key (d1), |
key (i2), |
key (dt2), |
key (v4), |
key (c2) |
);
|
|
CREATE TABLE t2 ( |
dt2 datetime,
|
d1 date, |
v4 varchar(1024), |
v1 varchar(1024), |
pk char(16), |
v2 varchar(10), |
v3 varchar(10), |
i2 int, |
c1 char(8), |
c2 char(8), |
dt1 datetime,
|
b1 bigint unsigned, |
i1 int, |
key (dt2), |
key (d1), |
key (v4), |
key (v1), |
primary key (pk), |
key (v2), |
key (v3), |
key (i2), |
key (c1), |
key (c2), |
key (b1) |
);
|
|
CREATE TABLE t3 ( |
pk char(16), |
v3 varchar(10), |
i2 int, |
b1 bigint unsigned, |
i1 int, |
c1 char(8), |
v1 varchar(1024), |
dt2 datetime,
|
d1 date, |
dt1 datetime,
|
c2 char(8), |
v4 varchar(1024), |
v2 varchar(10), |
primary key (pk), |
key (v3), |
key (i2), |
key (b1), |
key (c1), |
key (v1), |
key (dt2), |
key (d1), |
key (c2), |
key (v4), |
key (v2) |
);
|
|
CREATE TABLE t4 ( |
b1 bigint unsigned, |
c2 char(8), |
pk char(16), |
v1 varchar(1024), |
dt2 datetime,
|
d1 date, |
dt1 datetime,
|
i2 int, |
i1 int, |
v4 varchar(1024), |
v3 varchar(10), |
c1 char(8), |
v2 varchar(10), |
key (b1), |
key (c2), |
primary key (pk), |
key (v3) |
);
|
|
INSERT INTO t4 VALUES |
(9, 'k', 1, 'g', '2005-01-01 00:00:00', '2001-01-01', '2005-08-01 00:00:00', 0, -3, 'a', 'o', 'c', 'e'), |
(6, 's', 2, 'A', '2012-12-12 07:09:58', '2006-06-16', '2007-01-01 00:00:00', -1, 1, 'i', 't', 'K', 'c'); |
|
CREATE TABLE t5 ( |
v3 varchar(10), |
c2 char(8), |
c1 char(8), |
dt1 datetime,
|
d1 date, |
pk char(16), |
v4 varchar(1024), |
b1 bigint unsigned, |
i2 int, |
dt2 datetime,
|
v2 varchar(10), |
v1 varchar(1024), |
i1 int, |
key (v3), |
key (c2), |
key (c1), |
key (d1), |
primary key (pk), |
key (v4), |
key (b1), |
key (i2), |
key (dt2), |
key (v2), |
key (v1) |
);
|
|
INSERT INTO t5 VALUES |
('H', 'N', 'Q', '2000-02-07 00:00:00', '2005-01-11', 'k1', 'O', 2, -1, '2000-01-01 00:00:00', 'm', 'o', 8), |
('s', 'W', 't', '2007-05-03 00:00:00', '2005-05-26', 'k2', 'y', 1, -2, '2005-07-15 00:00:00', 'g', 'i', 4); |
|
CREATE TABLE t6 ( |
pk char(16), |
c1 char(8), |
dt1 datetime,
|
i1 int, |
v5 varchar(1024), |
dt2 datetime,
|
v6 varchar(10), |
v2 varchar(10), |
v3 varchar(10), |
v4 varchar(1024), |
d1 date, |
c2 char(8), |
b1 bigint unsigned, |
i2 int, |
v1 varchar(1024), |
primary key (pk), |
key (c1 ), |
key (dt2 ), |
key (v2 ), |
key (v3 ), |
key (v4 ), |
key (d1 ), |
key (c2 ), |
key (b1 ), |
key (i2 ), |
key (v1 )); |
|
CREATE TABLE t7 ( |
d1 date, |
v2 varchar(10), |
v1 varchar(1024), |
c1 char(8), |
i1 int, |
c2 char(8), |
dt1 datetime,
|
v4 varchar(1024), |
i2 int, |
pk char(16), |
v6 varchar(10), |
b1 bigint unsigned, |
v5 varchar(1024), |
v3 varchar(10), |
dt2 datetime,
|
key (d1), |
key (v2), |
key (v1), |
key (c1), |
key (c2), |
key (v4), |
key (i2), |
primary key (pk), |
key (b1), |
key (v3), |
key (dt2) |
);
|
|
CREATE TABLE t8 ( |
d1 date, |
pk char(16), |
i2 int, |
v2 varchar(10), |
v3 varchar(10), |
dt1 datetime,
|
v6 varchar(10), |
v5 varchar(1024), |
v1 varchar(1024), |
c2 char(8), |
dt2 datetime,
|
v4 varchar(1024), |
b1 bigint unsigned, |
c1 char(8), |
i1 int, |
key (d1), |
primary key (pk), |
key (i2), |
key (v2), |
key (v3), |
key (v1), |
key (c2), |
key (dt2), |
key (v4), |
key (b1), |
key (c1) |
);
|
|
INSERT INTO t8 VALUES # PRESERVE |
('2003-02-10', 'a', 4, 't', 'I', '2009-12-07 15:55:58', 'y', 'W', 'u', 't', '2012-12-12 16:36:32', 'j', 5, 'i', 1), |
('2002-08-24', 'b', 1, 'w', 'c', '2008-06-16 01:07:12', 'a', 'w', 'j', 'a', '2012-12-12 04:40:12', 't', 4, 'w', 3); |
|
CREATE TABLE t9 ( |
c2 char(8), |
dt2 datetime,
|
v4 varchar(1024), |
c1 char(8), |
v1 varchar(1024), |
b1 bigint unsigned, |
dt1 datetime,
|
i2 int, |
v6 varchar(10), |
v5 varchar(1024), |
v3 varchar(10), |
pk char(16), |
v2 varchar(10), |
i1 int, |
d1 date, |
key (c2), |
key (dt2), |
key (v4), |
key (c1), |
key (v1), |
key (b1), |
key (i2), |
key (v3), |
primary key (pk), |
key (d1) |
);
|
|
ALTER TABLE t2 ADD INDEX idx (i2, pk); |
DROP INDEX idx ON t2; |
ALTER TABLE t9 ADD INDEX idx (pk, i2, i1); |
ALTER TABLE t6 ADD INDEX idx (i2, pk, i1); |
DROP INDEX idx ON t9; |
DROP INDEX idx ON t6; |
ALTER TABLE t7 ADD INDEX idx (i2, pk); |
DROP INDEX idx ON t7; |
ALTER TABLE t1 ADD INDEX idx (pk, i2, i1); |
DROP INDEX idx ON t1; |
ALTER TABLE t2 ADD INDEX idx (i2, pk, i1); |
DROP INDEX idx ON t2; |
ALTER TABLE t6 ADD INDEX idx (v6(1), v5(200)); |
DROP INDEX idx ON t6; |
ALTER TABLE t7 ADD INDEX idx (v6(7), v5(200)); |
ALTER TABLE t3 ADD INDEX idx (i2, pk, i1); |
DROP INDEX idx ON t3; |
DROP INDEX idx ON t7; |
ALTER TABLE t5 ADD INDEX idx (i2, pk); |
ALTER TABLE t6 ADD INDEX idx (i2, pk); |
DROP INDEX idx ON t5; |
|
SELECT t8.v3 FROM t8 LEFT JOIN t4 ON t8.v3 = t4.v3 ORDER BY t8.v3 DESC LIMIT 10; |
revision-id: psergey@askmonty.org-20130322111245-43wqvaouclxso5zo
|
revno: 4807
|
branch-nick: mysql-5.6-leveldb
|