This is not just a valgrind warning, but can be a full-blown crash. The unsimplified test case is pasted below and will be shortly simplified further.
--disable_warnings
DROP TABLE /*! IF EXISTS */ CC;
DROP TABLE /*! IF EXISTS */ C;
DROP TABLE /*! IF EXISTS */ BB;
DROP TABLE /*! IF EXISTS */ B;
--enable_warnings
CREATE TABLE `CC` (
`pk` int(11) NOT NULL AUTO_INCREMENT,
`col_int_key` int(11) DEFAULT NULL,
`col_date_key` date DEFAULT NULL,
`col_varchar_key` varchar(1) DEFAULT NULL,
`col_varchar_nokey` varchar(1) DEFAULT NULL,
PRIMARY KEY (`pk`),
KEY `col_int_key` (`col_int_key`),
KEY `col_date_key` (`col_date_key`),
KEY `col_varchar_key` (`col_varchar_key`,`col_int_key`)
) ENGINE=MyISAM AUTO_INCREMENT=30 DEFAULT CHARSET=latin1;
INSERT INTO `CC` VALUES (10,8,NULL,'v','v');
INSERT INTO `CC` VALUES (11,9,'2006-06-14','r','r');
INSERT INTO `CC` VALUES (12,9,'2002-09-12','a','a');
INSERT INTO `CC` VALUES (13,186,'2005-02-15','m','m');
INSERT INTO `CC` VALUES (14,NULL,NULL,'y','y');
INSERT INTO `CC` VALUES (15,2,'2008-11-04','j','j');
INSERT INTO `CC` VALUES (16,3,'2004-09-04','d','d');
INSERT INTO `CC` VALUES (17,0,'2006-06-05','z','z');
INSERT INTO `CC` VALUES (18,133,'1900-01-01','e','e');
INSERT INTO `CC` VALUES (19,1,'1900-01-01','h','h');
INSERT INTO `CC` VALUES (20,8,'1900-01-01','b','b');
INSERT INTO `CC` VALUES (21,5,'2005-01-13','s','s');
INSERT INTO `CC` VALUES (22,5,'2006-05-21','e','e');
INSERT INTO `CC` VALUES (23,8,'2003-09-08','j','j');
INSERT INTO `CC` VALUES (24,6,'2006-12-23','e','e');
INSERT INTO `CC` VALUES (25,51,'2006-10-15','f','f');
INSERT INTO `CC` VALUES (26,4,'2005-04-06','v','v');
INSERT INTO `CC` VALUES (27,7,'2008-04-07','x','x');
INSERT INTO `CC` VALUES (28,6,'2006-10-10','m','m');
INSERT INTO `CC` VALUES (29,4,'1900-01-01','c','c');
CREATE TABLE `C` (
`pk` int(11) NOT NULL AUTO_INCREMENT,
`col_int_key` int(11) DEFAULT NULL,
`col_date_key` date DEFAULT NULL,
`col_varchar_key` varchar(1) DEFAULT NULL,
`col_varchar_nokey` varchar(1) DEFAULT NULL,
PRIMARY KEY (`pk`),
KEY `col_int_key` (`col_int_key`),
KEY `col_date_key` (`col_date_key`),
KEY `col_varchar_key` (`col_varchar_key`,`col_int_key`)
) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=latin1;
INSERT INTO `C` VALUES (1,2,NULL,'w','w');
INSERT INTO `C` VALUES (2,9,'2001-09-19','m','m');
INSERT INTO `C` VALUES (3,3,'2004-09-12','m','m');
INSERT INTO `C` VALUES (4,9,NULL,'k','k');
INSERT INTO `C` VALUES (5,NULL,'2002-07-19','r','r');
INSERT INTO `C` VALUES (6,9,'2002-12-16','t','t');
INSERT INTO `C` VALUES (7,3,'2006-02-08','j','j');
INSERT INTO `C` VALUES (8,8,'2006-08-28','u','u');
INSERT INTO `C` VALUES (9,8,'2001-04-14','h','h');
INSERT INTO `C` VALUES (10,53,'2000-01-05','o','o');
INSERT INTO `C` VALUES (11,0,'2003-12-06',NULL,NULL);
INSERT INTO `C` VALUES (12,5,'1900-01-01','k','k');
INSERT INTO `C` VALUES (13,166,'2002-11-27','e','e');
INSERT INTO `C` VALUES (14,3,NULL,'n','n');
INSERT INTO `C` VALUES (15,0,'2003-05-27','t','t');
INSERT INTO `C` VALUES (16,1,'2005-05-03','c','c');
INSERT INTO `C` VALUES (17,9,'2001-04-18','m','m');
INSERT INTO `C` VALUES (18,5,'2005-12-27','y','y');
INSERT INTO `C` VALUES (19,6,'2004-08-20','f','f');
INSERT INTO `C` VALUES (20,2,'1900-01-01','d','d');
CREATE TABLE `BB` (
`pk` int(11) NOT NULL AUTO_INCREMENT,
`col_int_key` int(11) DEFAULT NULL,
`col_date_key` date DEFAULT NULL,
`col_varchar_key` varchar(1) DEFAULT NULL,
`col_varchar_nokey` varchar(1) DEFAULT NULL,
PRIMARY KEY (`pk`),
KEY `col_int_key` (`col_int_key`),
KEY `col_date_key` (`col_date_key`),
KEY `col_varchar_key` (`col_varchar_key`,`col_int_key`)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;
INSERT INTO `BB` VALUES (10,8,'2002-02-21',NULL,NULL);
CREATE TABLE `B` (
`pk` int(11) NOT NULL AUTO_INCREMENT,
`col_int_key` int(11) DEFAULT NULL,
`col_date_key` date DEFAULT NULL,
`col_varchar_key` varchar(1) DEFAULT NULL,
`col_varchar_nokey` varchar(1) DEFAULT NULL,
PRIMARY KEY (`pk`),
KEY `col_int_key` (`col_int_key`),
KEY `col_date_key` (`col_date_key`),
KEY `col_varchar_key` (`col_varchar_key`,`col_int_key`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
INSERT INTO `B` VALUES (1,7,'1900-01-01','f','f');
SELECT table1 . `col_date_key` AS field1
FROM ( BB AS table1 LEFT JOIN ( ( (
SELECT SUBQUERY1_t1 . *
FROM ( C AS SUBQUERY1_t1 INNER JOIN CC AS SUBQUERY1_t2 ON (SUBQUERY1_t2 . `col_int_key` = SUBQUERY1_t1 . `pk` ) )
WHERE SUBQUERY1_t2 . `col_varchar_key` <= (
SELECT COUNT( CHILD_SUBQUERY1_t1 . `col_varchar_nokey` ) AS CHILD_SUBQUERY1_field1
FROM ( CC AS CHILD_SUBQUERY1_t1 STRAIGHT_JOIN C AS CHILD_SUBQUERY1_t2 ON (CHILD_SUBQUERY1_t2 . `col_int_key` = CHILD_SUBQUERY1_t1 . `col_int_key` ) )
WHERE CHILD_SUBQUERY1_t2 . `col_int_key` < CHILD_SUBQUERY1_t2 . `col_int_key` ) ) AS table2 INNER JOIN (
SELECT SUBQUERY2_t1 . *
FROM CC AS SUBQUERY2_t1 ) AS table3 ON (table3 . `col_varchar_key` = table2 . `col_varchar_key` ) ) ) ON (table3 . `col_varchar_key` = table2 . `col_varchar_nokey` ) )
WHERE ( ( 5, 3 ) NOT IN (
SELECT DISTINCT SUBQUERY3_t1 . `col_int_key` AS SUBQUERY3_field1 , SUM( SUBQUERY3_t2 . `pk` ) AS SUBQUERY3_field2
FROM ( B AS SUBQUERY3_t1 LEFT OUTER JOIN BB AS SUBQUERY3_t2 ON (SUBQUERY3_t2 . `col_varchar_key` = SUBQUERY3_t1 . `col_varchar_key` AND SUBQUERY3_t2 . `pk` NOT IN (
SELECT DISTINCT CHILD_SUBQUERY2_t1 . `pk` AS CHILD_SUBQUERY2_field1
FROM ( CC AS CHILD_SUBQUERY2_t1 LEFT OUTER JOIN C AS CHILD_SUBQUERY2_t2 ON (CHILD_SUBQUERY2_t2 . `col_int_key` = CHILD_SUBQUERY2_t1 . `pk` ) )
WHERE CHILD_SUBQUERY2_t1 . `col_varchar_nokey` = 'v'
GROUP BY child_subquery2_field1 ) ) ) ) ) AND ( table3 . `col_varchar_key` <> 'k' OR table1 . `col_varchar_key` <= table3 . `col_varchar_key` )
GROUP BY field1
;
DROP TABLE CC;
DROP TABLE C;
DROP TABLE BB;
DROP TABLE B;
This is not just a valgrind warning, but can be a full-blown crash. The unsimplified test case is pasted below and will be shortly simplified further.
--disable_warnings
DROP TABLE /*! IF EXISTS */ CC;
DROP TABLE /*! IF EXISTS */ C;
DROP TABLE /*! IF EXISTS */ BB;
DROP TABLE /*! IF EXISTS */ B;
--enable_warnings
CREATE TABLE `CC` ( varchar_ nokey` varchar(1) DEFAULT NULL, key`,`col_ int_key` ) 'v','v' ); 2006-06- 14','r' ,'r'); 2002-09- 12','a' ,'a'); '2005-02- 15','m' ,'m'); NULL,'y' ,'y'); 2008-11- 04','j' ,'j'); 2004-09- 04','d' ,'d'); 2006-06- 05','z' ,'z'); '1900-01- 01','e' ,'e'); 1900-01- 01','h' ,'h'); 1900-01- 01','b' ,'b'); 2005-01- 13','s' ,'s'); 2006-05- 21','e' ,'e'); 2003-09- 08','j' ,'j'); 2006-12- 23','e' ,'e'); '2006-10- 15','f' ,'f'); 2005-04- 06','v' ,'v'); 2008-04- 07','x' ,'x'); 2006-10- 10','m' ,'m'); 1900-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' ); '2000-01- 05','o' ,'o'); 2003-12- 06',NULL, NULL); 1900-01- 01','k' ,'k'); '2002-11- 27','e' ,'e'); 'n','n' ); 2003-05- 27','t' ,'t'); 2005-05- 03','c' ,'c'); 2001-04- 18','m' ,'m'); 2005-12- 27','y' ,'y'); 2004-08- 20','f' ,'f'); 1900-01- 01','d' ,'d'); varchar_ nokey` varchar(1) DEFAULT NULL, key`,`col_ int_key` ) 2002-02- 21',NULL, NULL); varchar_ nokey` varchar(1) DEFAULT NULL, key`,`col_ int_key` ) 01-01', 'f','f' );
`pk` int(11) NOT NULL AUTO_INCREMENT,
`col_int_key` int(11) DEFAULT NULL,
`col_date_key` date DEFAULT NULL,
`col_varchar_key` varchar(1) DEFAULT NULL,
`col_
PRIMARY KEY (`pk`),
KEY `col_int_key` (`col_int_key`),
KEY `col_date_key` (`col_date_key`),
KEY `col_varchar_key` (`col_varchar_
) ENGINE=MyISAM AUTO_INCREMENT=30 DEFAULT CHARSET=latin1;
INSERT INTO `CC` VALUES (10,8,NULL,
INSERT INTO `CC` VALUES (11,9,'
INSERT INTO `CC` VALUES (12,9,'
INSERT INTO `CC` VALUES (13,186,
INSERT INTO `CC` VALUES (14,NULL,
INSERT INTO `CC` VALUES (15,2,'
INSERT INTO `CC` VALUES (16,3,'
INSERT INTO `CC` VALUES (17,0,'
INSERT INTO `CC` VALUES (18,133,
INSERT INTO `CC` VALUES (19,1,'
INSERT INTO `CC` VALUES (20,8,'
INSERT INTO `CC` VALUES (21,5,'
INSERT INTO `CC` VALUES (22,5,'
INSERT INTO `CC` VALUES (23,8,'
INSERT INTO `CC` VALUES (24,6,'
INSERT INTO `CC` VALUES (25,51,
INSERT INTO `CC` VALUES (26,4,'
INSERT INTO `CC` VALUES (27,7,'
INSERT INTO `CC` VALUES (28,6,'
INSERT INTO `CC` VALUES (29,4,'
CREATE TABLE `C` (
`pk` int(11) NOT NULL AUTO_INCREMENT,
`col_int_key` int(11) DEFAULT NULL,
`col_date_key` date DEFAULT NULL,
`col_varchar_key` varchar(1) DEFAULT NULL,
`col_
PRIMARY KEY (`pk`),
KEY `col_int_key` (`col_int_key`),
KEY `col_date_key` (`col_date_key`),
KEY `col_varchar_key` (`col_varchar_
) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=latin1;
INSERT INTO `C` VALUES (1,2,NULL,'w','w');
INSERT INTO `C` VALUES (2,9,'2001-
INSERT INTO `C` VALUES (3,3,'2004-
INSERT INTO `C` VALUES (4,9,NULL,'k','k');
INSERT INTO `C` VALUES (5,NULL,
INSERT INTO `C` VALUES (6,9,'2002-
INSERT INTO `C` VALUES (7,3,'2006-
INSERT INTO `C` VALUES (8,8,'2006-
INSERT INTO `C` VALUES (9,8,'2001-
INSERT INTO `C` VALUES (10,53,
INSERT INTO `C` VALUES (11,0,'
INSERT INTO `C` VALUES (12,5,'
INSERT INTO `C` VALUES (13,166,
INSERT INTO `C` VALUES (14,3,NULL,
INSERT INTO `C` VALUES (15,0,'
INSERT INTO `C` VALUES (16,1,'
INSERT INTO `C` VALUES (17,9,'
INSERT INTO `C` VALUES (18,5,'
INSERT INTO `C` VALUES (19,6,'
INSERT INTO `C` VALUES (20,2,'
CREATE TABLE `BB` (
`pk` int(11) NOT NULL AUTO_INCREMENT,
`col_int_key` int(11) DEFAULT NULL,
`col_date_key` date DEFAULT NULL,
`col_varchar_key` varchar(1) DEFAULT NULL,
`col_
PRIMARY KEY (`pk`),
KEY `col_int_key` (`col_int_key`),
KEY `col_date_key` (`col_date_key`),
KEY `col_varchar_key` (`col_varchar_
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;
INSERT INTO `BB` VALUES (10,8,'
CREATE TABLE `B` (
`pk` int(11) NOT NULL AUTO_INCREMENT,
`col_int_key` int(11) DEFAULT NULL,
`col_date_key` date DEFAULT NULL,
`col_varchar_key` varchar(1) DEFAULT NULL,
`col_
PRIMARY KEY (`pk`),
KEY `col_int_key` (`col_int_key`),
KEY `col_date_key` (`col_date_key`),
KEY `col_varchar_key` (`col_varchar_
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
INSERT INTO `B` VALUES (1,7,'1900-
SELECT table1 . `col_date_key` AS field1 _field1 _field1 _field1 ) ) ) ) ) AND ( table3 . `col_varchar_key` <> 'k' OR table1 . `col_varchar_key` <= table3 . `col_varchar_key` )
FROM ( BB AS table1 LEFT JOIN ( ( (
SELECT SUBQUERY1_t1 . *
FROM ( C AS SUBQUERY1_t1 INNER JOIN CC AS SUBQUERY1_t2 ON (SUBQUERY1_t2 . `col_int_key` = SUBQUERY1_t1 . `pk` ) )
WHERE SUBQUERY1_t2 . `col_varchar_key` <= (
SELECT COUNT( CHILD_SUBQUERY1_t1 . `col_varchar_nokey` ) AS CHILD_SUBQUERY1
FROM ( CC AS CHILD_SUBQUERY1_t1 STRAIGHT_JOIN C AS CHILD_SUBQUERY1_t2 ON (CHILD_SUBQUERY1_t2 . `col_int_key` = CHILD_SUBQUERY1_t1 . `col_int_key` ) )
WHERE CHILD_SUBQUERY1_t2 . `col_int_key` < CHILD_SUBQUERY1_t2 . `col_int_key` ) ) AS table2 INNER JOIN (
SELECT SUBQUERY2_t1 . *
FROM CC AS SUBQUERY2_t1 ) AS table3 ON (table3 . `col_varchar_key` = table2 . `col_varchar_key` ) ) ) ON (table3 . `col_varchar_key` = table2 . `col_varchar_nokey` ) )
WHERE ( ( 5, 3 ) NOT IN (
SELECT DISTINCT SUBQUERY3_t1 . `col_int_key` AS SUBQUERY3_field1 , SUM( SUBQUERY3_t2 . `pk` ) AS SUBQUERY3_field2
FROM ( B AS SUBQUERY3_t1 LEFT OUTER JOIN BB AS SUBQUERY3_t2 ON (SUBQUERY3_t2 . `col_varchar_key` = SUBQUERY3_t1 . `col_varchar_key` AND SUBQUERY3_t2 . `pk` NOT IN (
SELECT DISTINCT CHILD_SUBQUERY2_t1 . `pk` AS CHILD_SUBQUERY2
FROM ( CC AS CHILD_SUBQUERY2_t1 LEFT OUTER JOIN C AS CHILD_SUBQUERY2_t2 ON (CHILD_SUBQUERY2_t2 . `col_int_key` = CHILD_SUBQUERY2_t1 . `pk` ) )
WHERE CHILD_SUBQUERY2_t1 . `col_varchar_nokey` = 'v'
GROUP BY child_subquery2
GROUP BY field1
;
DROP TABLE CC;
DROP TABLE C;
DROP TABLE BB;
DROP TABLE B;