From: Roy Lyseng Date: June 16 2011 10:56am Subject: bzr commit into mysql-trunk branch (roy.lyseng:3385) Bug#12640083 List-Archive: http://lists.mysql.com/commits/139314 X-Bug: 12640083 Message-Id: <20110616105604.3AD5F1F5@tyr67.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2218015772000795861==" --===============2218015772000795861== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/rl136806/mysql/repo/mysql-review/ based on revid:jorgen.loland@stripped 3385 Roy Lyseng 2011-06-16 Bug#12640083: Same query executed as WHERE subquery gives different results on IN() compare The query that returns with an empty result is using the MaterializeScan semi-join strategy, and it has an outer join operation inside the materialized subquery. As has happened before, there are remnants of outer join execution in the join_tab that is reused for reading the materialized tables, in this case it was the first_unmatched field that needed clearing. mysql-test/include/subquery_sj.inc Added test case for bug#12640083. mysql-test/r/subquery_sj_all.result mysql-test/r/subquery_sj_all_jcl6.result mysql-test/r/subquery_sj_all_jcl7.result mysql-test/r/subquery_sj_dupsweed.result mysql-test/r/subquery_sj_dupsweed_jcl6.result mysql-test/r/subquery_sj_dupsweed_jcl7.result mysql-test/r/subquery_sj_firstmatch.result mysql-test/r/subquery_sj_firstmatch_jcl6.result mysql-test/r/subquery_sj_firstmatch_jcl7.result mysql-test/r/subquery_sj_loosescan.result mysql-test/r/subquery_sj_loosescan_jcl6.result mysql-test/r/subquery_sj_loosescan_jcl7.result mysql-test/r/subquery_sj_mat.result mysql-test/r/subquery_sj_mat_jcl6.result mysql-test/r/subquery_sj_mat_jcl7.result mysql-test/r/subquery_sj_mat_nosj.result mysql-test/r/subquery_sj_none.result mysql-test/r/subquery_sj_none_jcl6.result mysql-test/r/subquery_sj_none_jcl7.result Added test case result for bug#12640083. sql/sql_select.cc In sub_select_sjm(), cleared the flag last_tab->first_unmatched. modified: mysql-test/include/subquery_sj.inc mysql-test/r/subquery_sj_all.result mysql-test/r/subquery_sj_all_jcl6.result mysql-test/r/subquery_sj_all_jcl7.result mysql-test/r/subquery_sj_dupsweed.result mysql-test/r/subquery_sj_dupsweed_jcl6.result mysql-test/r/subquery_sj_dupsweed_jcl7.result mysql-test/r/subquery_sj_firstmatch.result mysql-test/r/subquery_sj_firstmatch_jcl6.result mysql-test/r/subquery_sj_firstmatch_jcl7.result mysql-test/r/subquery_sj_loosescan.result mysql-test/r/subquery_sj_loosescan_jcl6.result mysql-test/r/subquery_sj_loosescan_jcl7.result mysql-test/r/subquery_sj_mat.result mysql-test/r/subquery_sj_mat_jcl6.result mysql-test/r/subquery_sj_mat_jcl7.result mysql-test/r/subquery_sj_mat_nosj.result mysql-test/r/subquery_sj_none.result mysql-test/r/subquery_sj_none_jcl6.result mysql-test/r/subquery_sj_none_jcl7.result sql/sql_select.cc === modified file 'mysql-test/include/subquery_sj.inc' --- a/mysql-test/include/subquery_sj.inc 2011-06-15 10:50:48 +0000 +++ b/mysql-test/include/subquery_sj.inc 2011-06-16 10:55:05 +0000 @@ -3617,3 +3617,56 @@ WHERE GRANDPARENT1.i2 ORDER BY GRANDPARENT1.i2 ; DROP TABLE t1,t2; + +--echo # +--echo # Bug#12640083: Same query executed as WHERE subquery gives different +--echo # results on IN() compare +--echo # + +CREATE TABLE t1 ( + pk int NOT NULL, + col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, + col_varchar_10_latin1_key varchar(10) DEFAULT NULL, + PRIMARY KEY (pk), + KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), + KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); + +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); + +CREATE TABLE t2 ( + pk int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (pk) +) ENGINE=Innodb; + +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 + JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key + ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; + +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( + SELECT alias1.col_varchar_10_latin1_key + FROM t1 AS alias1 + LEFT JOIN t1 AS alias2 + JOIN t2 AS alias3 + ON alias2.col_varchar_10_latin1_key + ON alias1.col_varchar_1024_utf8_key + WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); + +DROP TABLE t1, t2, t3; + +--echo # End of the test for bug#12640083. === modified file 'mysql-test/r/subquery_sj_all.result' --- a/mysql-test/r/subquery_sj_all.result 2011-06-15 10:50:48 +0000 +++ b/mysql-test/r/subquery_sj_all.result 2011-06-16 10:55:05 +0000 @@ -5504,4 +5504,56 @@ ORDER BY GRANDPARENT1.i2 ; i1 1 DROP TABLE t1,t2; +# +# Bug#12640083: Same query executed as WHERE subquery gives different +# results on IN() compare +# +CREATE TABLE t1 ( +pk int NOT NULL, +col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, +col_varchar_10_latin1_key varchar(10) DEFAULT NULL, +PRIMARY KEY (pk), +KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), +KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); +CREATE TABLE t2 ( +pk int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (pk) +) ENGINE=Innodb; +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 +LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 +ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); +col_varchar_10_latin1_key +a +ab +abc +abcd +abcde +abcdef +DROP TABLE t1, t2, t3; +# End of the test for bug#12640083. set optimizer_switch=default; === modified file 'mysql-test/r/subquery_sj_all_jcl6.result' --- a/mysql-test/r/subquery_sj_all_jcl6.result 2011-06-15 10:50:48 +0000 +++ b/mysql-test/r/subquery_sj_all_jcl6.result 2011-06-16 10:55:05 +0000 @@ -5508,5 +5508,57 @@ ORDER BY GRANDPARENT1.i2 ; i1 1 DROP TABLE t1,t2; +# +# Bug#12640083: Same query executed as WHERE subquery gives different +# results on IN() compare +# +CREATE TABLE t1 ( +pk int NOT NULL, +col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, +col_varchar_10_latin1_key varchar(10) DEFAULT NULL, +PRIMARY KEY (pk), +KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), +KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); +CREATE TABLE t2 ( +pk int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (pk) +) ENGINE=Innodb; +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 +LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 +ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); +col_varchar_10_latin1_key +a +ab +abc +abcd +abcde +abcdef +DROP TABLE t1, t2, t3; +# End of the test for bug#12640083. set optimizer_switch=default; set optimizer_join_cache_level=default; === modified file 'mysql-test/r/subquery_sj_all_jcl7.result' --- a/mysql-test/r/subquery_sj_all_jcl7.result 2011-06-15 10:50:48 +0000 +++ b/mysql-test/r/subquery_sj_all_jcl7.result 2011-06-16 10:55:05 +0000 @@ -5508,5 +5508,57 @@ ORDER BY GRANDPARENT1.i2 ; i1 1 DROP TABLE t1,t2; +# +# Bug#12640083: Same query executed as WHERE subquery gives different +# results on IN() compare +# +CREATE TABLE t1 ( +pk int NOT NULL, +col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, +col_varchar_10_latin1_key varchar(10) DEFAULT NULL, +PRIMARY KEY (pk), +KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), +KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); +CREATE TABLE t2 ( +pk int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (pk) +) ENGINE=Innodb; +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 +LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 +ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); +col_varchar_10_latin1_key +a +ab +abc +abcd +abcde +abcdef +DROP TABLE t1, t2, t3; +# End of the test for bug#12640083. set optimizer_switch=default; set optimizer_join_cache_level=default; === modified file 'mysql-test/r/subquery_sj_dupsweed.result' --- a/mysql-test/r/subquery_sj_dupsweed.result 2011-06-15 10:50:48 +0000 +++ b/mysql-test/r/subquery_sj_dupsweed.result 2011-06-16 10:55:05 +0000 @@ -5503,4 +5503,56 @@ ORDER BY GRANDPARENT1.i2 ; i1 1 DROP TABLE t1,t2; +# +# Bug#12640083: Same query executed as WHERE subquery gives different +# results on IN() compare +# +CREATE TABLE t1 ( +pk int NOT NULL, +col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, +col_varchar_10_latin1_key varchar(10) DEFAULT NULL, +PRIMARY KEY (pk), +KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), +KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); +CREATE TABLE t2 ( +pk int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (pk) +) ENGINE=Innodb; +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 +LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 +ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); +col_varchar_10_latin1_key +a +ab +abc +abcd +abcde +abcdef +DROP TABLE t1, t2, t3; +# End of the test for bug#12640083. set optimizer_switch=default; === modified file 'mysql-test/r/subquery_sj_dupsweed_jcl6.result' --- a/mysql-test/r/subquery_sj_dupsweed_jcl6.result 2011-06-15 10:50:48 +0000 +++ b/mysql-test/r/subquery_sj_dupsweed_jcl6.result 2011-06-16 10:55:05 +0000 @@ -5507,5 +5507,57 @@ ORDER BY GRANDPARENT1.i2 ; i1 1 DROP TABLE t1,t2; +# +# Bug#12640083: Same query executed as WHERE subquery gives different +# results on IN() compare +# +CREATE TABLE t1 ( +pk int NOT NULL, +col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, +col_varchar_10_latin1_key varchar(10) DEFAULT NULL, +PRIMARY KEY (pk), +KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), +KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); +CREATE TABLE t2 ( +pk int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (pk) +) ENGINE=Innodb; +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 +LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 +ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); +col_varchar_10_latin1_key +a +ab +abc +abcd +abcde +abcdef +DROP TABLE t1, t2, t3; +# End of the test for bug#12640083. set optimizer_switch=default; set optimizer_join_cache_level=default; === modified file 'mysql-test/r/subquery_sj_dupsweed_jcl7.result' --- a/mysql-test/r/subquery_sj_dupsweed_jcl7.result 2011-06-15 10:50:48 +0000 +++ b/mysql-test/r/subquery_sj_dupsweed_jcl7.result 2011-06-16 10:55:05 +0000 @@ -5507,5 +5507,57 @@ ORDER BY GRANDPARENT1.i2 ; i1 1 DROP TABLE t1,t2; +# +# Bug#12640083: Same query executed as WHERE subquery gives different +# results on IN() compare +# +CREATE TABLE t1 ( +pk int NOT NULL, +col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, +col_varchar_10_latin1_key varchar(10) DEFAULT NULL, +PRIMARY KEY (pk), +KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), +KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); +CREATE TABLE t2 ( +pk int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (pk) +) ENGINE=Innodb; +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 +LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 +ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); +col_varchar_10_latin1_key +a +ab +abc +abcd +abcde +abcdef +DROP TABLE t1, t2, t3; +# End of the test for bug#12640083. set optimizer_switch=default; set optimizer_join_cache_level=default; === modified file 'mysql-test/r/subquery_sj_firstmatch.result' --- a/mysql-test/r/subquery_sj_firstmatch.result 2011-06-15 10:50:48 +0000 +++ b/mysql-test/r/subquery_sj_firstmatch.result 2011-06-16 10:55:05 +0000 @@ -5505,6 +5505,58 @@ i1 1 DROP TABLE t1,t2; # +# Bug#12640083: Same query executed as WHERE subquery gives different +# results on IN() compare +# +CREATE TABLE t1 ( +pk int NOT NULL, +col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, +col_varchar_10_latin1_key varchar(10) DEFAULT NULL, +PRIMARY KEY (pk), +KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), +KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); +CREATE TABLE t2 ( +pk int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (pk) +) ENGINE=Innodb; +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 +LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 +ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); +col_varchar_10_latin1_key +a +ab +abc +abcd +abcde +abcdef +DROP TABLE t1, t2, t3; +# End of the test for bug#12640083. +# # Bug#51457 Firstmatch semijoin strategy gives wrong results for # certain query plans # === modified file 'mysql-test/r/subquery_sj_firstmatch_jcl6.result' --- a/mysql-test/r/subquery_sj_firstmatch_jcl6.result 2011-06-15 10:50:48 +0000 +++ b/mysql-test/r/subquery_sj_firstmatch_jcl6.result 2011-06-16 10:55:05 +0000 @@ -5509,6 +5509,58 @@ i1 1 DROP TABLE t1,t2; # +# Bug#12640083: Same query executed as WHERE subquery gives different +# results on IN() compare +# +CREATE TABLE t1 ( +pk int NOT NULL, +col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, +col_varchar_10_latin1_key varchar(10) DEFAULT NULL, +PRIMARY KEY (pk), +KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), +KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); +CREATE TABLE t2 ( +pk int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (pk) +) ENGINE=Innodb; +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 +LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 +ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); +col_varchar_10_latin1_key +a +ab +abc +abcd +abcde +abcdef +DROP TABLE t1, t2, t3; +# End of the test for bug#12640083. +# # Bug#51457 Firstmatch semijoin strategy gives wrong results for # certain query plans # === modified file 'mysql-test/r/subquery_sj_firstmatch_jcl7.result' --- a/mysql-test/r/subquery_sj_firstmatch_jcl7.result 2011-06-15 10:50:48 +0000 +++ b/mysql-test/r/subquery_sj_firstmatch_jcl7.result 2011-06-16 10:55:05 +0000 @@ -5509,6 +5509,58 @@ i1 1 DROP TABLE t1,t2; # +# Bug#12640083: Same query executed as WHERE subquery gives different +# results on IN() compare +# +CREATE TABLE t1 ( +pk int NOT NULL, +col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, +col_varchar_10_latin1_key varchar(10) DEFAULT NULL, +PRIMARY KEY (pk), +KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), +KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); +CREATE TABLE t2 ( +pk int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (pk) +) ENGINE=Innodb; +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 +LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 +ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); +col_varchar_10_latin1_key +a +ab +abc +abcd +abcde +abcdef +DROP TABLE t1, t2, t3; +# End of the test for bug#12640083. +# # Bug#51457 Firstmatch semijoin strategy gives wrong results for # certain query plans # === modified file 'mysql-test/r/subquery_sj_loosescan.result' --- a/mysql-test/r/subquery_sj_loosescan.result 2011-06-15 10:50:48 +0000 +++ b/mysql-test/r/subquery_sj_loosescan.result 2011-06-16 10:55:05 +0000 @@ -5504,4 +5504,56 @@ ORDER BY GRANDPARENT1.i2 ; i1 1 DROP TABLE t1,t2; +# +# Bug#12640083: Same query executed as WHERE subquery gives different +# results on IN() compare +# +CREATE TABLE t1 ( +pk int NOT NULL, +col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, +col_varchar_10_latin1_key varchar(10) DEFAULT NULL, +PRIMARY KEY (pk), +KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), +KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); +CREATE TABLE t2 ( +pk int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (pk) +) ENGINE=Innodb; +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 +LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 +ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); +col_varchar_10_latin1_key +a +ab +abc +abcd +abcde +abcdef +DROP TABLE t1, t2, t3; +# End of the test for bug#12640083. set optimizer_switch=default; === modified file 'mysql-test/r/subquery_sj_loosescan_jcl6.result' --- a/mysql-test/r/subquery_sj_loosescan_jcl6.result 2011-06-15 10:50:48 +0000 +++ b/mysql-test/r/subquery_sj_loosescan_jcl6.result 2011-06-16 10:55:05 +0000 @@ -5508,5 +5508,57 @@ ORDER BY GRANDPARENT1.i2 ; i1 1 DROP TABLE t1,t2; +# +# Bug#12640083: Same query executed as WHERE subquery gives different +# results on IN() compare +# +CREATE TABLE t1 ( +pk int NOT NULL, +col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, +col_varchar_10_latin1_key varchar(10) DEFAULT NULL, +PRIMARY KEY (pk), +KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), +KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); +CREATE TABLE t2 ( +pk int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (pk) +) ENGINE=Innodb; +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 +LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 +ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); +col_varchar_10_latin1_key +a +ab +abc +abcd +abcde +abcdef +DROP TABLE t1, t2, t3; +# End of the test for bug#12640083. set optimizer_switch=default; set optimizer_join_cache_level=default; === modified file 'mysql-test/r/subquery_sj_loosescan_jcl7.result' --- a/mysql-test/r/subquery_sj_loosescan_jcl7.result 2011-06-15 10:50:48 +0000 +++ b/mysql-test/r/subquery_sj_loosescan_jcl7.result 2011-06-16 10:55:05 +0000 @@ -5508,5 +5508,57 @@ ORDER BY GRANDPARENT1.i2 ; i1 1 DROP TABLE t1,t2; +# +# Bug#12640083: Same query executed as WHERE subquery gives different +# results on IN() compare +# +CREATE TABLE t1 ( +pk int NOT NULL, +col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, +col_varchar_10_latin1_key varchar(10) DEFAULT NULL, +PRIMARY KEY (pk), +KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), +KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); +CREATE TABLE t2 ( +pk int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (pk) +) ENGINE=Innodb; +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 +LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 +ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); +col_varchar_10_latin1_key +a +ab +abc +abcd +abcde +abcdef +DROP TABLE t1, t2, t3; +# End of the test for bug#12640083. set optimizer_switch=default; set optimizer_join_cache_level=default; === modified file 'mysql-test/r/subquery_sj_mat.result' --- a/mysql-test/r/subquery_sj_mat.result 2011-06-15 10:50:48 +0000 +++ b/mysql-test/r/subquery_sj_mat.result 2011-06-16 10:55:05 +0000 @@ -5504,4 +5504,56 @@ ORDER BY GRANDPARENT1.i2 ; i1 1 DROP TABLE t1,t2; +# +# Bug#12640083: Same query executed as WHERE subquery gives different +# results on IN() compare +# +CREATE TABLE t1 ( +pk int NOT NULL, +col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, +col_varchar_10_latin1_key varchar(10) DEFAULT NULL, +PRIMARY KEY (pk), +KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), +KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); +CREATE TABLE t2 ( +pk int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (pk) +) ENGINE=Innodb; +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 +LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 +ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); +col_varchar_10_latin1_key +a +ab +abc +abcd +abcde +abcdef +DROP TABLE t1, t2, t3; +# End of the test for bug#12640083. set optimizer_switch=default; === modified file 'mysql-test/r/subquery_sj_mat_jcl6.result' --- a/mysql-test/r/subquery_sj_mat_jcl6.result 2011-06-15 10:50:48 +0000 +++ b/mysql-test/r/subquery_sj_mat_jcl6.result 2011-06-16 10:55:05 +0000 @@ -5508,5 +5508,57 @@ ORDER BY GRANDPARENT1.i2 ; i1 1 DROP TABLE t1,t2; +# +# Bug#12640083: Same query executed as WHERE subquery gives different +# results on IN() compare +# +CREATE TABLE t1 ( +pk int NOT NULL, +col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, +col_varchar_10_latin1_key varchar(10) DEFAULT NULL, +PRIMARY KEY (pk), +KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), +KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); +CREATE TABLE t2 ( +pk int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (pk) +) ENGINE=Innodb; +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 +LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 +ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); +col_varchar_10_latin1_key +a +ab +abc +abcd +abcde +abcdef +DROP TABLE t1, t2, t3; +# End of the test for bug#12640083. set optimizer_switch=default; set optimizer_join_cache_level=default; === modified file 'mysql-test/r/subquery_sj_mat_jcl7.result' --- a/mysql-test/r/subquery_sj_mat_jcl7.result 2011-06-15 10:50:48 +0000 +++ b/mysql-test/r/subquery_sj_mat_jcl7.result 2011-06-16 10:55:05 +0000 @@ -5508,5 +5508,57 @@ ORDER BY GRANDPARENT1.i2 ; i1 1 DROP TABLE t1,t2; +# +# Bug#12640083: Same query executed as WHERE subquery gives different +# results on IN() compare +# +CREATE TABLE t1 ( +pk int NOT NULL, +col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, +col_varchar_10_latin1_key varchar(10) DEFAULT NULL, +PRIMARY KEY (pk), +KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), +KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); +CREATE TABLE t2 ( +pk int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (pk) +) ENGINE=Innodb; +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 +LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 +ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); +col_varchar_10_latin1_key +a +ab +abc +abcd +abcde +abcdef +DROP TABLE t1, t2, t3; +# End of the test for bug#12640083. set optimizer_switch=default; set optimizer_join_cache_level=default; === modified file 'mysql-test/r/subquery_sj_mat_nosj.result' --- a/mysql-test/r/subquery_sj_mat_nosj.result 2011-06-15 10:50:48 +0000 +++ b/mysql-test/r/subquery_sj_mat_nosj.result 2011-06-16 10:55:05 +0000 @@ -5726,4 +5726,56 @@ ORDER BY GRANDPARENT1.i2 ; i1 1 DROP TABLE t1,t2; +# +# Bug#12640083: Same query executed as WHERE subquery gives different +# results on IN() compare +# +CREATE TABLE t1 ( +pk int NOT NULL, +col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, +col_varchar_10_latin1_key varchar(10) DEFAULT NULL, +PRIMARY KEY (pk), +KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), +KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); +CREATE TABLE t2 ( +pk int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (pk) +) ENGINE=Innodb; +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 +LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 +ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); +col_varchar_10_latin1_key +a +ab +abc +abcd +abcde +abcdef +DROP TABLE t1, t2, t3; +# End of the test for bug#12640083. set optimizer_switch=default; === modified file 'mysql-test/r/subquery_sj_none.result' --- a/mysql-test/r/subquery_sj_none.result 2011-06-15 10:50:48 +0000 +++ b/mysql-test/r/subquery_sj_none.result 2011-06-16 10:55:05 +0000 @@ -5649,4 +5649,56 @@ ORDER BY GRANDPARENT1.i2 ; i1 1 DROP TABLE t1,t2; +# +# Bug#12640083: Same query executed as WHERE subquery gives different +# results on IN() compare +# +CREATE TABLE t1 ( +pk int NOT NULL, +col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, +col_varchar_10_latin1_key varchar(10) DEFAULT NULL, +PRIMARY KEY (pk), +KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), +KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); +CREATE TABLE t2 ( +pk int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (pk) +) ENGINE=Innodb; +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 +LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 +ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); +col_varchar_10_latin1_key +a +ab +abc +abcd +abcde +abcdef +DROP TABLE t1, t2, t3; +# End of the test for bug#12640083. set optimizer_switch=default; === modified file 'mysql-test/r/subquery_sj_none_jcl6.result' --- a/mysql-test/r/subquery_sj_none_jcl6.result 2011-06-15 10:50:48 +0000 +++ b/mysql-test/r/subquery_sj_none_jcl6.result 2011-06-16 10:55:05 +0000 @@ -5653,5 +5653,57 @@ ORDER BY GRANDPARENT1.i2 ; i1 1 DROP TABLE t1,t2; +# +# Bug#12640083: Same query executed as WHERE subquery gives different +# results on IN() compare +# +CREATE TABLE t1 ( +pk int NOT NULL, +col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, +col_varchar_10_latin1_key varchar(10) DEFAULT NULL, +PRIMARY KEY (pk), +KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), +KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); +CREATE TABLE t2 ( +pk int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (pk) +) ENGINE=Innodb; +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 +LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 +ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); +col_varchar_10_latin1_key +a +ab +abc +abcd +abcde +abcdef +DROP TABLE t1, t2, t3; +# End of the test for bug#12640083. set optimizer_switch=default; set optimizer_join_cache_level=default; === modified file 'mysql-test/r/subquery_sj_none_jcl7.result' --- a/mysql-test/r/subquery_sj_none_jcl7.result 2011-06-15 10:50:48 +0000 +++ b/mysql-test/r/subquery_sj_none_jcl7.result 2011-06-16 10:55:05 +0000 @@ -5653,5 +5653,57 @@ ORDER BY GRANDPARENT1.i2 ; i1 1 DROP TABLE t1,t2; +# +# Bug#12640083: Same query executed as WHERE subquery gives different +# results on IN() compare +# +CREATE TABLE t1 ( +pk int NOT NULL, +col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL, +col_varchar_10_latin1_key varchar(10) DEFAULT NULL, +PRIMARY KEY (pk), +KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)), +KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key) +); +INSERT INTO t1 VALUES +(1, 'a', 'a'), +(2, 'ab', 'ab'), +(3, 'abc', 'abc'), +(4, 'abcd', 'abcd'), +(5, 'abcde', 'abcde'), +(6, 'abcdef', 'abcdef'), +(7, 'abcdefg', 'abcdefg'), +(8, 'abcdefgh', 'abcdefgh'), +(9, 'abcdefghi', 'abcdefghi'), +(10, 'abcdefghij', 'abcdefghij'); +CREATE TABLE t2 ( +pk int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (pk) +) ENGINE=Innodb; +CREATE TABLE t3 +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk; +SELECT * +FROM t3 +WHERE col_varchar_10_latin1_key IN ( +SELECT alias1.col_varchar_10_latin1_key +FROM t1 AS alias1 +LEFT JOIN t1 AS alias2 +JOIN t2 AS alias3 +ON alias2.col_varchar_10_latin1_key +ON alias1.col_varchar_1024_utf8_key +WHERE alias1.pk AND alias1.pk < 7 OR alias1.pk AND alias3.pk); +col_varchar_10_latin1_key +a +ab +abc +abcd +abcde +abcdef +DROP TABLE t1, t2, t3; +# End of the test for bug#12640083. set optimizer_switch=default; set optimizer_join_cache_level=default; === modified file 'sql/sql_select.cc' --- a/sql/sql_select.cc 2011-06-11 13:38:32 +0000 +++ b/sql/sql_select.cc 2011-06-16 10:55:05 +0000 @@ -17420,6 +17420,7 @@ sub_select_sjm(JOIN *join, JOIN_TAB *joi // Clear possible outer join information from earlier use of this join tab last_tab->last_inner= NULL; + last_tab->first_unmatched= NULL; } } else --===============2218015772000795861== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/roy.lyseng@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: roy.lyseng@stripped # target_branch: file:///home/rl136806/mysql/repo/mysql-review/ # testament_sha1: ca0a8b1e8e0689ae2da271f7ce90216632324847 # timestamp: 2011-06-16 12:56:04 +0200 # base_revision_id: jorgen.loland@stripped\ # yhbq58b26glco915 # # Begin bundle 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 0YS96PSSLWS7Pm1Vlpz56WOrrOjo/KQyc2efFYXurezcGmykR1bK/msYM2TfIff5vd3dsvXdnw9L pZKSnOt/qR2Zhd6L1cFlHFnokiq9IS/Tv3uS4xeFXm0XM5qtbl7w1UecSM7rGSxQ8Xr17utr9cmb Ba9WjPFjaxXNasasG+LlVHL1bXunHCSKCcOnTDm4ubFisZuC1zb3JmqpJHFQPR5uWDvn20rOoiuu 3lxxw38c+5Hs7hY3bpilWbZakoyzvw7unR89FjJkwfPlmvYL3Zub5DftvmFXPRcowyWWmrpove7k q8eNGzbNo9fyXc2nNjz5SR7PDs4tXMzUVWvJgznBk4rXdYkjJRm8UxlLyMW+7j4I2dnmyUkjhmq8 3FYs5Mzqq5rELNnnXRh+wOO65I38mCxI7LlXVq7L3yZr5tvSiteS1vWWUWKmDsq4OTVux38yE5NO TNSSMW5q6Nl7go1UVcmSrZgyXMlnPkvxqox22s8iPVVhOKrZitb1u9sxkjc4rl7eyWG1zRdguaBg uXsL1F+54uxUuXsmKm7O9eqypaq+qSOji1c2Tv7atHk0cmTJxVXPRY3PqtYvI2c3JuUdFz2D56JI 5xlYQwVqALkZchmzY6XMkKJIVwWSQa7WdqmwW7ixs+nox/DSjNGlGKPGjBMbAIdwkHPw6MrIDCLJ xQhbAlkGMYxjFVVVETxhDe+cIdHrGG6SHDJIeABPvJ+xOYJ/8T7hMirlKv7CZqfEOjEsSYwx/6E2 fJsE1KvuJqVbCZCaiak4FXCE7QmwmSrj0Kv5iYE/Eq1JxE5ScROaE2E/YmCfsE2k5hP6c1KyJzE/ Qn7wnKJuJ+QTEn4k/UnGTST8iYE/vpR+mKNImKMYo80J9gTmKtf77KM0eWKuwmeUq/YTcTbkmgTE VbAmCak2CZJkmCZhPOT9wnkKuTjUfrt59KM0bCYE6ROInAmmyjGKN5NBOBMwnSE/sJ6SrvJqTYJ6 ckyKuITtxRwJvieneTmJvE5SdWMExRijUTeTiJxBN5VqTQnSTfuJpCbCraTWjhgTMnEJvEwJ/pUQ aEf6JJ9/rEcIilCix/n9v0vuvurZbbdavWX23X33Vuuuu/oCP3UkKSQoIoSSgjcL/OinGJsqfnu4 z+OqT/lgwqwYExwxPtItlSHlo/qJ+K5n3MPvdDWSNVIjl/iwW/o5smVy5gquUfo0WKMi1cuXL1zJ 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 --===============2218015772000795861==--