From: Jorgen Loland Date: January 10 2011 9:04am Subject: bzr commit into mysql-trunk branch (jorgen.loland:3471) Bug#58837 List-Archive: http://lists.mysql.com/commits/128254 X-Bug: 58837 Message-Id: <20110110090423.CD9C47A9@atum21.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0986314358697985265==" --===============0986314358697985265== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///export/home/jl208045/mysql/mysql-trunk/ based on revid:vasil.dimov@stripped 3471 Jorgen Loland 2011-01-10 BUG#58837: ICP crash or valgrind error due to uninitialized value in innobase_index_cond The problem was that ICP pushed a condition to an InnoDB table accessed through the primary key, and handler::end_range was not initialized in this case. This problem emerged now because ICP on InnoDB primary index has recently been enabled. @ mysql-test/include/icp_tests.inc Added test case for BUG#58837 @ mysql-test/r/innodb_icp.result Added test case for BUG#58837 @ mysql-test/r/innodb_icp_none.result Added test case for BUG#58837 @ mysql-test/r/myisam_icp.result Added test case for BUG#58837 @ mysql-test/r/myisam_icp_none.result Added test case for BUG#58837 @ sql/handler.h Initialize handler::end_range in ha_rnd_init() and ha_rnd_end() modified: mysql-test/include/icp_tests.inc mysql-test/r/innodb_icp.result mysql-test/r/innodb_icp_none.result mysql-test/r/myisam_icp.result mysql-test/r/myisam_icp_none.result sql/handler.h === modified file 'mysql-test/include/icp_tests.inc' --- a/mysql-test/include/icp_tests.inc 2010-12-13 15:22:45 +0000 +++ b/mysql-test/include/icp_tests.inc 2011-01-10 09:04:20 +0000 @@ -653,3 +653,47 @@ create table t1 (a char(2) charset utf8, insert into t1 values ('',1); select 1 from t1 where b <= 1 and a <> ''; drop table t1; + +--echo # +--echo # Bug#58837: ICP crash or valgrind error due to uninitialized +--echo # value in innobase_index_cond +--echo # + +CREATE TABLE t1 ( + t1_int INT, + t1_time TIME +); + +CREATE TABLE t2 ( + t2_int int PRIMARY KEY, + t2_int2 INT +); + +--disable_warnings +INSERT INTO t2 VALUES (); +INSERT INTO t1 VALUES (); +--enable_warnings + +let $query= +SELECT * +FROM t1 AS t1a +WHERE NOT EXISTS + (SELECT * + FROM t1 AS t1b + WHERE t1b.t1_int NOT IN + (SELECT t2.t2_int + FROM t2 + WHERE t1b.t1_time LIKE t1b.t1_int + OR t1b.t1_time <> t2.t2_int2 + AND 6=7 + ) +) +; + +--echo +--eval $query; +--echo +--eval EXPLAIN $query; +--echo + +DROP TABLE t1,t2; === modified file 'mysql-test/r/innodb_icp.result' --- a/mysql-test/r/innodb_icp.result 2010-12-13 15:22:45 +0000 +++ b/mysql-test/r/innodb_icp.result 2011-01-10 09:04:20 +0000 @@ -598,5 +598,56 @@ insert into t1 values ('',1); select 1 from t1 where b <= 1 and a <> ''; 1 drop table t1; +# +# Bug#58837: ICP crash or valgrind error due to uninitialized +# value in innobase_index_cond +# +CREATE TABLE t1 ( +t1_int INT, +t1_time TIME +); +CREATE TABLE t2 ( +t2_int int PRIMARY KEY, +t2_int2 INT +); +INSERT INTO t2 VALUES (); +INSERT INTO t1 VALUES (); + +SELECT * +FROM t1 AS t1a +WHERE NOT EXISTS +(SELECT * +FROM t1 AS t1b +WHERE t1b.t1_int NOT IN +(SELECT t2.t2_int +FROM t2 +WHERE t1b.t1_time LIKE t1b.t1_int +OR t1b.t1_time <> t2.t2_int2 +AND 6=7 +) +) +;; +t1_int t1_time + +EXPLAIN SELECT * +FROM t1 AS t1a +WHERE NOT EXISTS +(SELECT * +FROM t1 AS t1b +WHERE t1b.t1_int NOT IN +(SELECT t2.t2_int +FROM t2 +WHERE t1b.t1_time LIKE t1b.t1_int +OR t1b.t1_time <> t2.t2_int2 +AND 6=7 +) +) +;; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE +2 SUBQUERY t1b ALL NULL NULL NULL NULL 1 Using where +3 DEPENDENT SUBQUERY t2 unique_subquery PRIMARY PRIMARY 4 func 1 Using where; Full scan on NULL key + +DROP TABLE t1,t2; set default_storage_engine= @save_storage_engine; set optimizer_switch=default; === modified file 'mysql-test/r/innodb_icp_none.result' --- a/mysql-test/r/innodb_icp_none.result 2010-12-13 15:22:45 +0000 +++ b/mysql-test/r/innodb_icp_none.result 2011-01-10 09:04:20 +0000 @@ -597,5 +597,56 @@ insert into t1 values ('',1); select 1 from t1 where b <= 1 and a <> ''; 1 drop table t1; +# +# Bug#58837: ICP crash or valgrind error due to uninitialized +# value in innobase_index_cond +# +CREATE TABLE t1 ( +t1_int INT, +t1_time TIME +); +CREATE TABLE t2 ( +t2_int int PRIMARY KEY, +t2_int2 INT +); +INSERT INTO t2 VALUES (); +INSERT INTO t1 VALUES (); + +SELECT * +FROM t1 AS t1a +WHERE NOT EXISTS +(SELECT * +FROM t1 AS t1b +WHERE t1b.t1_int NOT IN +(SELECT t2.t2_int +FROM t2 +WHERE t1b.t1_time LIKE t1b.t1_int +OR t1b.t1_time <> t2.t2_int2 +AND 6=7 +) +) +;; +t1_int t1_time + +EXPLAIN SELECT * +FROM t1 AS t1a +WHERE NOT EXISTS +(SELECT * +FROM t1 AS t1b +WHERE t1b.t1_int NOT IN +(SELECT t2.t2_int +FROM t2 +WHERE t1b.t1_time LIKE t1b.t1_int +OR t1b.t1_time <> t2.t2_int2 +AND 6=7 +) +) +;; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE +2 SUBQUERY t1b ALL NULL NULL NULL NULL 1 Using where +3 DEPENDENT SUBQUERY t2 unique_subquery PRIMARY PRIMARY 4 func 1 Using where; Full scan on NULL key + +DROP TABLE t1,t2; set default_storage_engine= @save_storage_engine; set optimizer_switch=default; === modified file 'mysql-test/r/myisam_icp.result' --- a/mysql-test/r/myisam_icp.result 2010-12-13 15:22:45 +0000 +++ b/mysql-test/r/myisam_icp.result 2011-01-10 09:04:20 +0000 @@ -596,4 +596,55 @@ insert into t1 values ('',1); select 1 from t1 where b <= 1 and a <> ''; 1 drop table t1; +# +# Bug#58837: ICP crash or valgrind error due to uninitialized +# value in innobase_index_cond +# +CREATE TABLE t1 ( +t1_int INT, +t1_time TIME +); +CREATE TABLE t2 ( +t2_int int PRIMARY KEY, +t2_int2 INT +); +INSERT INTO t2 VALUES (); +INSERT INTO t1 VALUES (); + +SELECT * +FROM t1 AS t1a +WHERE NOT EXISTS +(SELECT * +FROM t1 AS t1b +WHERE t1b.t1_int NOT IN +(SELECT t2.t2_int +FROM t2 +WHERE t1b.t1_time LIKE t1b.t1_int +OR t1b.t1_time <> t2.t2_int2 +AND 6=7 +) +) +;; +t1_int t1_time + +EXPLAIN SELECT * +FROM t1 AS t1a +WHERE NOT EXISTS +(SELECT * +FROM t1 AS t1b +WHERE t1b.t1_int NOT IN +(SELECT t2.t2_int +FROM t2 +WHERE t1b.t1_time LIKE t1b.t1_int +OR t1b.t1_time <> t2.t2_int2 +AND 6=7 +) +) +;; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE +2 SUBQUERY t1b system NULL NULL NULL NULL 1 +3 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE + +DROP TABLE t1,t2; set optimizer_switch=default; === modified file 'mysql-test/r/myisam_icp_none.result' --- a/mysql-test/r/myisam_icp_none.result 2010-12-13 15:22:45 +0000 +++ b/mysql-test/r/myisam_icp_none.result 2011-01-10 09:04:20 +0000 @@ -595,4 +595,55 @@ insert into t1 values ('',1); select 1 from t1 where b <= 1 and a <> ''; 1 drop table t1; +# +# Bug#58837: ICP crash or valgrind error due to uninitialized +# value in innobase_index_cond +# +CREATE TABLE t1 ( +t1_int INT, +t1_time TIME +); +CREATE TABLE t2 ( +t2_int int PRIMARY KEY, +t2_int2 INT +); +INSERT INTO t2 VALUES (); +INSERT INTO t1 VALUES (); + +SELECT * +FROM t1 AS t1a +WHERE NOT EXISTS +(SELECT * +FROM t1 AS t1b +WHERE t1b.t1_int NOT IN +(SELECT t2.t2_int +FROM t2 +WHERE t1b.t1_time LIKE t1b.t1_int +OR t1b.t1_time <> t2.t2_int2 +AND 6=7 +) +) +;; +t1_int t1_time + +EXPLAIN SELECT * +FROM t1 AS t1a +WHERE NOT EXISTS +(SELECT * +FROM t1 AS t1b +WHERE t1b.t1_int NOT IN +(SELECT t2.t2_int +FROM t2 +WHERE t1b.t1_time LIKE t1b.t1_int +OR t1b.t1_time <> t2.t2_int2 +AND 6=7 +) +) +;; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE +2 SUBQUERY t1b system NULL NULL NULL NULL 1 +3 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE + +DROP TABLE t1,t2; set optimizer_switch=default; === modified file 'sql/handler.h' --- a/sql/handler.h 2010-11-18 16:34:56 +0000 +++ b/sql/handler.h 2011-01-10 09:04:20 +0000 @@ -1556,6 +1556,7 @@ public: DBUG_ENTER("ha_rnd_init"); DBUG_ASSERT(inited==NONE || (inited==RND && scan)); inited= (result= rnd_init(scan)) ? NONE: RND; + end_range= NULL; DBUG_RETURN(result); } int ha_rnd_end() @@ -1563,6 +1564,7 @@ public: DBUG_ENTER("ha_rnd_end"); DBUG_ASSERT(inited==RND); inited=NONE; + end_range= NULL; DBUG_RETURN(rnd_end()); } int ha_rnd_next(uchar *buf); --===============0986314358697985265== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/jorgen.loland@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: jorgen.loland@stripped\ # iep4ek5s7klq6rwk # target_branch: file:///export/home/jl208045/mysql/mysql-trunk/ # testament_sha1: 96249aca899cb132e075b4176943c77072fb986b # timestamp: 2011-01-10 10:04:23 +0100 # base_revision_id: vasil.dimov@stripped\ # 8qygun7nuaqf9d3u # # Begin bundle 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 --===============0986314358697985265==--