Different result with different join_cache_level and/or join_cache options in maria-5.3-mwl128
Bug #665049 reported by
Philip Stoev
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
MariaDB |
Fix Released
|
High
|
Igor Babaev |
Bug Description
The following query:
SELECT COUNT(table1 .`col_varchar_key`) FROM C table1 STRAIGHT_JOIN ( C table2 STRAIGHT_JOIN C table3 ON table3 .`col_varchar_key` = table2 .`col_varchar_key` AND table3 .`col_int_key` < table2 .`col_int_key` ) ON table3 .`pk` ;
Returns a different result in maria-5.3-mwl128 depending on the join_cache_level and/or the join_cache optimizer_switch options. Maria 5.3-main returns the same result in all join_cache_levels.
Related branches
Changed in maria: | |
importance: | Undecided → High |
status: | New → Confirmed |
status: | Confirmed → In Progress |
Changed in maria: | |
status: | Fix Committed → Fix Released |
To post a comment you must log in.
Test case with varying optimizer_switch:
CREATE TABLE `C` ( key`,`col_ int_key` )
`pk` int(11) NOT NULL AUTO_INCREMENT,
`col_int_key` int(11) NOT NULL,
`col_varchar_key` varchar(1) NOT NULL,
PRIMARY KEY (`pk`),
KEY `col_int_key` (`col_int_key`),
KEY `col_varchar_key` (`col_varchar_
) ENGINE=MARIA AUTO_INCREMENT=21 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1;
INSERT INTO `C` VALUES (1,9,'x');
INSERT INTO `C` VALUES (2,5,'g');
INSERT INTO `C` VALUES (3,1,'o');
INSERT INTO `C` VALUES (4,0,'g');
INSERT INTO `C` VALUES (5,1,'v');
INSERT INTO `C` VALUES (6,190,'m');
INSERT INTO `C` VALUES (7,6,'x');
INSERT INTO `C` VALUES (8,3,'c');
INSERT INTO `C` VALUES (9,4,'z');
INSERT INTO `C` VALUES (10,3,'i');
INSERT INTO `C` VALUES (11,186,'x');
INSERT INTO `C` VALUES (12,1,'g');
INSERT INTO `C` VALUES (13,8,'q');
INSERT INTO `C` VALUES (14,226,'m');
INSERT INTO `C` VALUES (15,133,'p');
INSERT INTO `C` VALUES (16,6,'e');
INSERT INTO `C` VALUES (17,3,'t');
INSERT INTO `C` VALUES (18,8,'j');
INSERT INTO `C` VALUES (19,5,'h');
INSERT INTO `C` VALUES (20,7,'w');
SELECT COUNT(table1 .`col_varchar_key`) FROM C table1 STRAIGHT_JOIN ( C table2 STRAIGHT_JOIN C table3 ON table3 .`col_varchar_key` = table2 .`col_varchar_key` AND table3 .`col_int_key` < table2 .`col_int_key` ) ON table3 .`pk` ;
EXPLAIN SELECT COUNT(table1 .`col_varchar_key`) FROM C table1 STRAIGHT_JOIN ( C table2 STRAIGHT_JOIN C table3 ON table3 .`col_varchar_key` = table2 .`col_varchar_key` AND table3 .`col_int_key` < table2 .`col_int_key` ) ON table3 .`pk` ;
SET SESSION join_cache_level = 6;
SELECT COUNT(table1 .`col_varchar_key`) FROM C table1 STRAIGHT_JOIN ( C table2 STRAIGHT_JOIN C table3 ON table3 .`col_varchar_key` = table2 .`col_varchar_key` AND table3 .`col_int_key` < table2 .`col_int_key` ) ON table3 .`pk` ;
EXPLAIN SELECT COUNT(table1 .`col_varchar_key`) FROM C table1 STRAIGHT_JOIN ( C table2 STRAIGHT_JOIN C table3 ON table3 .`col_varchar_key` = table2 .`col_varchar_key` AND table3 .`col_int_key` < table2 .`col_int_key` ) ON table3 .`pk` ;
SET SESSION optimizer_ switch= 'join_cache_ incremental= off';
SELECT COUNT(table1 .`col_varchar_key`) FROM C table1 STRAIGHT_JOIN ( C table2 STRAIGHT_JOIN C table3 ON table3 .`col_varchar_key` = table2 .`col_varchar_key` AND table3 .`col_int_key` < table2 .`col_int_key` ) ON table3 .`pk` ;
EXPLAIN SELECT COUNT(table1 .`col_varchar_key`) FROM C table1 STRAIGHT_JOIN ( C table2 STRAIGHT_JOIN C table3 ON table3 .`col_varchar_key` = table2 .`col_varchar_key` AND table3 .`col_int_key` < table2 .`col_int_key` ) ON table3 .`pk` ;
SET SESSION optimizer_ switch= 'join_cache_ bka=off' ;
SELECT COUNT(table1 .`col_varchar_key`) FROM C table1 STRAIGHT_JOIN ( C table2 STRAIGHT_JOIN C table3 ON table3 .`col_varchar_key` = table2 .`col_varchar_key` AND table3 .`col_int_key` < table2 .`col_int_key` ) ON table3 .`pk` ;
EXPLAIN SELECT COUNT(table1 .`col_varchar_key`) FROM C table1 STRAIGHT_JOIN ( C table2 STRAIGHT_JOIN C table3 ON table3 .`col_varchar_key` = table2 .`col_varchar_key` AND table3 .`col_int_key` < table2 .`col_int_key` ) ON table3 .`pk` ;
SET SESSION optimizer_ switch= 'join_cache_ h...