Details
-
Type:
Bug
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 5.5.39, 10.0.14
-
Fix Version/s: 5.5.43
-
Component/s: Data Manipulation - Subquery, Optimizer
-
Labels:None
Description
MDEV-5721 is not fixed properly. This test case still fails:
CREATE TABLE t1 (i INT, state VARCHAR(995)) ENGINE=MyISAM;
INSERT INTO t1 VALUES (2,'Louisiana'),(9,'Maine');
CREATE TABLE t2 (state VARCHAR(995), j INT) ENGINE=MyISAM;
INSERT INTO t2 VALUES ('Louisiana',9),('Alaska',5);
INSERT INTO t2 SELECT t2.* FROM t2 JOIN t2 AS t3 JOIN t2 AS t4 JOIN t2 AS t5;
SET @@max_heap_table_size= 16384;
set @@optimizer_switch='derived_merge=OFF';
SELECT * FROM t1 AS t1_1 LEFT JOIN ( t1 AS t1_2 INNER JOIN (SELECT * FROM t2) v2 ON t1_2.i = j ) ON t1_1.state = v2.state;
DROP TABLE t1, t2;
Due to differences in:
1. key length computation: key_length() in check_tmp_key vs pack_length() in create_internal_tmp_table
2. key length comparing:
"key_len <= MI_MAX_KEY_LENGTH" in check_tmp_table
vs
"keyinfo->key_length >= table->file->max_key_length()" in create_internal_tmp_table
Gliffy Diagrams
Attachments
Issue Links
Activity
- All
- Comments
- Work Log
- History
- Activity
- Transitions
If I replace 995 with 998 in the example, the error goes away:
CREATE TABLE t1 (i INT, state VARCHAR(998)) ENGINE=MyISAM; INSERT INTO t1 VALUES (2,'Louisiana'),(9,'Maine'); CREATE TABLE t2 (state VARCHAR(998), j INT) ENGINE=MyISAM; INSERT INTO t2 VALUES ('Louisiana',9),('Alaska',5); INSERT INTO t2 SELECT t2.* FROM t2 JOIN t2 AS t3 JOIN t2 AS t4 JOIN t2 AS t5; SET @@max_heap_table_size= 16384; set @@optimizer_switch='derived_merge=OFF'; SELECT * FROM t1 AS t1_1 LEFT JOIN ( t1 AS t1_2 INNER JOIN (SELECT * FROM t2) v2 ON t1_2.i = j ) ON t1_1.state = v2.state; DROP TABLE t1, t2;