RQG: Query returns extra rows when executed with materialization=on
Bug #611382 reported by
Philip Stoev
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
MariaDB |
Fix Released
|
Wishlist
|
Timour Katchaounov |
Bug Description
The following query returns extra rows when executed in maria 5.3 with semijoin=off. If the query is executed with semijoin=on, or if it is executed on 5.2 or with the subquery manually inlined, no rows are returned.
SELECT table2 .`col_date_key`
FROM BB table1 JOIN ( C table2 JOIN CC table3 ON table3 .`col_varchar_key` = table2 .`col_varchar_
ON table3 .`col_varchar_key` = table2 .`col_varchar_key`
WHERE table1 .`col_varchar_
SELECT `col_varchar_nokey`
FROM C ) ;
The EXPLAIN plan does not specify what optimization strategy was chosen instead of semijoin.
Changed in maria: | |
importance: | Medium → Undecided |
Changed in maria: | |
status: | Fix Committed → Fix Released |
To post a comment you must log in.
Test case:
SET SESSION optimizer_switch = 'semijoin=off'; varchar_ nokey` varchar(1) DEFAULT NULL, key`,`col_ int_key` ) 06-14', 'r','r' ); 09-12', 'a','a' ); 02-15', 'm','m' ); 'y','y' ); 11-04', 'j','j' ); 09-04', 'd','d' ); 06-05', 'z','z' ); 01-01', 'e','e' ); 01-01', 'h','h' ); 01-01', 'b','b' ); 01-13', 's','s' ); 05-21', 'e','e' ); 09-08', 'j','j' ); 12-23', 'e','e' ); 10-15', 'f','f' ); 04-06', 'v','v' ); 04-07', 'x','x' ); 10-10', 'm','m' ); 01-01', 'c','c' ); varchar_ nokey` varchar(1) DEFAULT NULL, key`,`col_ int_key` ) 09-19', 'm','m' ); 09-12', 'm','m' ); 2002-07- 19','r' ,'r'); 12-16', 't','t' ); 02-08', 'j','j' ); 08-28', 'u','u' ); 04-14', 'h','h' ); 01-05', 'o','o' ); 12-06', NULL,NULL) ; 01-01', 'k','k' ); 11-27', 'e','e' ); 05-27', 't','t' ); 05-03', 'c','c' ); 04-18', 'm','m' ); 12-27', 'y','y' ); 08-20', 'f','f' ); 01-01', 'd','d' ); varchar_ nokey` varchar(1) DEFAULT NULL, key`,`col_ int_key` ) 02-21', NULL,NULL) ;
CREATE TABLE `CC` (
`col_int_key` int(11) DEFAULT NULL,
`col_date_key` date DEFAULT NULL,
`col_varchar_key` varchar(1) DEFAULT NULL,
`col_
KEY `col_int_key` (`col_int_key`),
KEY `col_date_key` (`col_date_key`),
KEY `col_varchar_key` (`col_varchar_
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `CC` VALUES (8,NULL,'v','v');
INSERT INTO `CC` VALUES (9,'2006-
INSERT INTO `CC` VALUES (9,'2002-
INSERT INTO `CC` VALUES (186,'2005-
INSERT INTO `CC` VALUES (NULL,NULL,
INSERT INTO `CC` VALUES (2,'2008-
INSERT INTO `CC` VALUES (3,'2004-
INSERT INTO `CC` VALUES (0,'2006-
INSERT INTO `CC` VALUES (133,'1900-
INSERT INTO `CC` VALUES (1,'1900-
INSERT INTO `CC` VALUES (8,'1900-
INSERT INTO `CC` VALUES (5,'2005-
INSERT INTO `CC` VALUES (5,'2006-
INSERT INTO `CC` VALUES (8,'2003-
INSERT INTO `CC` VALUES (6,'2006-
INSERT INTO `CC` VALUES (51,'2006-
INSERT INTO `CC` VALUES (4,'2005-
INSERT INTO `CC` VALUES (7,'2008-
INSERT INTO `CC` VALUES (6,'2006-
INSERT INTO `CC` VALUES (4,'1900-
CREATE TABLE `C` (
`col_int_key` int(11) DEFAULT NULL,
`col_date_key` date DEFAULT NULL,
`col_varchar_key` varchar(1) DEFAULT NULL,
`col_
KEY `col_int_key` (`col_int_key`),
KEY `col_date_key` (`col_date_key`),
KEY `col_varchar_key` (`col_varchar_
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `C` VALUES (2,NULL,'w','w');
INSERT INTO `C` VALUES (9,'2001-
INSERT INTO `C` VALUES (3,'2004-
INSERT INTO `C` VALUES (9,NULL,'k','k');
INSERT INTO `C` VALUES (NULL,'
INSERT INTO `C` VALUES (9,'2002-
INSERT INTO `C` VALUES (3,'2006-
INSERT INTO `C` VALUES (8,'2006-
INSERT INTO `C` VALUES (8,'2001-
INSERT INTO `C` VALUES (53,'2000-
INSERT INTO `C` VALUES (0,'2003-
INSERT INTO `C` VALUES (5,'1900-
INSERT INTO `C` VALUES (166,'2002-
INSERT INTO `C` VALUES (3,NULL,'n','n');
INSERT INTO `C` VALUES (0,'2003-
INSERT INTO `C` VALUES (1,'2005-
INSERT INTO `C` VALUES (9,'2001-
INSERT INTO `C` VALUES (5,'2005-
INSERT INTO `C` VALUES (6,'2004-
INSERT INTO `C` VALUES (2,'1900-
CREATE TABLE `BB` (
`col_int_key` int(11) DEFAULT NULL,
`col_date_key` date DEFAULT NULL,
`col_varchar_key` varchar(1) DEFAULT NULL,
`col_
KEY `col_int_key` (`col_int_key`),
KEY `col_date_key` (`col_date_key`),
KEY `col_varchar_key` (`col_varchar_
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `BB` VALUES (8,'2002-
SELECT table2 .`col_date_key`
FROM BB table1 JOIN ( ...