From: Roy Lyseng Date: November 24 2010 8:17am Subject: bzr commit into mysql-trunk branch (roy.lyseng:3287) Bug#57431 List-Archive: http://lists.mysql.com/commits/124810 X-Bug: 57431 Message-Id: <20101124081740.DFED01F2@tyr67.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6249270024026142529==" --===============6249270024026142529== 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:tor.didriksen@stripped 3287 Roy Lyseng 2010-11-24 Bug#57431: subquery returns wrong result (semijoin=on) with pred AND The test case contains an outer query with a single table and an IN subquery with two outerjoined tables. The MaterializeScan semijoin strategy is selected, meaning that an outerjoin operation is first performed over join_tabs 0 and 1. After the outerjoin, sub_select_sjm() is called to perform a semijoin between the result of the outerjoin in join_tab 1 and the outer table in join_tab 2. However, join_tab 1 still contains some reminiscent data from the outerjoin operation, hence this operation also behaves like an outerjoin. Fixed by temporarily deleting the outerjoin information from the join_tab representing the result of the outerjoin operation. mysql-test/include/subquery_sj_innodb.inc Test case for Bug#57431. The problem can only be reproduced with 1 row in the inner table, hence Innodb is needed to prevent 'const table' optimization. mysql-test/r/subquery_sj_innodb_all.result mysql-test/r/subquery_sj_innodb_all_jcl6.result mysql-test/r/subquery_sj_innodb_all_jcl7.result mysql-test/r/subquery_sj_innodb_none.result mysql-test/r/subquery_sj_innodb_none_jcl6.result mysql-test/r/subquery_sj_innodb_none_jcl7.result Updated test results for Bug#57431. sql/sql_select.cc In sub_select_sjm(), clear the last_inner field of the first join_tab to take part in the semijoin operation. modified: mysql-test/include/subquery_sj_innodb.inc mysql-test/r/subquery_sj_innodb_all.result mysql-test/r/subquery_sj_innodb_all_jcl6.result mysql-test/r/subquery_sj_innodb_all_jcl7.result mysql-test/r/subquery_sj_innodb_none.result mysql-test/r/subquery_sj_innodb_none_jcl6.result mysql-test/r/subquery_sj_innodb_none_jcl7.result sql/sql_select.cc === modified file 'mysql-test/include/subquery_sj_innodb.inc' --- a/mysql-test/include/subquery_sj_innodb.inc 2010-07-13 08:14:01 +0000 +++ b/mysql-test/include/subquery_sj_innodb.inc 2010-11-24 08:16:05 +0000 @@ -114,3 +114,35 @@ explain select 1 from t2 where c2 in (select 1 from t3, t2) and c1 in (select convert(c6,char(1)) from t2); drop table t2, t3; +--echo # +--echo # BUG#57431: subquery returns wrong result (semijoin=on) with pred AND +--echo # +CREATE TABLE c ( + col_int_nokey INT DEFAULT NULL, + col_int_key INT DEFAULT NULL, + col_varchar_key VARCHAR(1) DEFAULT NULL, + col_varchar_nokey VARCHAR(1) DEFAULT NULL, + KEY col_int_key(col_int_key), + KEY col_varchar_key(col_varchar_key, col_int_key) +) ENGINE=InnoDB; +INSERT INTO c VALUES (NULL,2,'w','w'); +INSERT INTO c VALUES (2,9,'t','t'); +INSERT INTO c VALUES (2,3,'n','n'); +INSERT INTO c VALUES (4,2,'d','d'); +CREATE TABLE bb ( + col_int_nokey INT DEFAULT NULL, + col_int_key INT DEFAULT NULL, + col_varchar_key VARCHAR(1) DEFAULT NULL, + col_varchar_nokey VARCHAR(1) DEFAULT NULL, + KEY col_int_key(col_int_key), + KEY col_varchar_key(col_varchar_key, col_int_key) +) ENGINE=InnoDB; +INSERT INTO bb VALUES (8,8,NULL,NULL); + +SELECT col_varchar_key +FROM c +WHERE col_int_nokey IN (SELECT INNR.col_int_nokey + FROM bb LEFT JOIN bb INNR ON INNR.col_varchar_nokey) + AND col_int_nokey = 2; + +DROP TABLE c, bb; === modified file 'mysql-test/r/subquery_sj_innodb_all.result' --- a/mysql-test/r/subquery_sj_innodb_all.result 2010-07-13 08:14:01 +0000 +++ b/mysql-test/r/subquery_sj_innodb_all.result 2010-11-24 08:16:05 +0000 @@ -141,4 +141,35 @@ id select_type table type possible_keys 1 PRIMARY t2 ALL NULL NULL NULL NULL 1 Using where 1 PRIMARY t3 ALL NULL NULL NULL NULL 2 FirstMatch(t2) drop table t2, t3; +# +# BUG#57431: subquery returns wrong result (semijoin=on) with pred AND +# +CREATE TABLE c ( +col_int_nokey INT DEFAULT NULL, +col_int_key INT DEFAULT NULL, +col_varchar_key VARCHAR(1) DEFAULT NULL, +col_varchar_nokey VARCHAR(1) DEFAULT NULL, +KEY col_int_key(col_int_key), +KEY col_varchar_key(col_varchar_key, col_int_key) +) ENGINE=InnoDB; +INSERT INTO c VALUES (NULL,2,'w','w'); +INSERT INTO c VALUES (2,9,'t','t'); +INSERT INTO c VALUES (2,3,'n','n'); +INSERT INTO c VALUES (4,2,'d','d'); +CREATE TABLE bb ( +col_int_nokey INT DEFAULT NULL, +col_int_key INT DEFAULT NULL, +col_varchar_key VARCHAR(1) DEFAULT NULL, +col_varchar_nokey VARCHAR(1) DEFAULT NULL, +KEY col_int_key(col_int_key), +KEY col_varchar_key(col_varchar_key, col_int_key) +) ENGINE=InnoDB; +INSERT INTO bb VALUES (8,8,NULL,NULL); +SELECT col_varchar_key +FROM c +WHERE col_int_nokey IN (SELECT INNR.col_int_nokey +FROM bb LEFT JOIN bb INNR ON INNR.col_varchar_nokey) +AND col_int_nokey = 2; +col_varchar_key +DROP TABLE c, bb; set optimizer_switch=default; === modified file 'mysql-test/r/subquery_sj_innodb_all_jcl6.result' --- a/mysql-test/r/subquery_sj_innodb_all_jcl6.result 2010-07-13 08:14:01 +0000 +++ b/mysql-test/r/subquery_sj_innodb_all_jcl6.result 2010-11-24 08:16:05 +0000 @@ -145,6 +145,37 @@ id select_type table type possible_keys 1 PRIMARY t2 ALL NULL NULL NULL NULL 1 Using where 1 PRIMARY t3 ALL NULL NULL NULL NULL 2 FirstMatch(t2) drop table t2, t3; +# +# BUG#57431: subquery returns wrong result (semijoin=on) with pred AND +# +CREATE TABLE c ( +col_int_nokey INT DEFAULT NULL, +col_int_key INT DEFAULT NULL, +col_varchar_key VARCHAR(1) DEFAULT NULL, +col_varchar_nokey VARCHAR(1) DEFAULT NULL, +KEY col_int_key(col_int_key), +KEY col_varchar_key(col_varchar_key, col_int_key) +) ENGINE=InnoDB; +INSERT INTO c VALUES (NULL,2,'w','w'); +INSERT INTO c VALUES (2,9,'t','t'); +INSERT INTO c VALUES (2,3,'n','n'); +INSERT INTO c VALUES (4,2,'d','d'); +CREATE TABLE bb ( +col_int_nokey INT DEFAULT NULL, +col_int_key INT DEFAULT NULL, +col_varchar_key VARCHAR(1) DEFAULT NULL, +col_varchar_nokey VARCHAR(1) DEFAULT NULL, +KEY col_int_key(col_int_key), +KEY col_varchar_key(col_varchar_key, col_int_key) +) ENGINE=InnoDB; +INSERT INTO bb VALUES (8,8,NULL,NULL); +SELECT col_varchar_key +FROM c +WHERE col_int_nokey IN (SELECT INNR.col_int_nokey +FROM bb LEFT JOIN bb INNR ON INNR.col_varchar_nokey) +AND col_int_nokey = 2; +col_varchar_key +DROP TABLE c, bb; set optimizer_switch=default; set optimizer_join_cache_level=default; show variables like 'optimizer_join_cache_level'; === modified file 'mysql-test/r/subquery_sj_innodb_all_jcl7.result' --- a/mysql-test/r/subquery_sj_innodb_all_jcl7.result 2010-07-13 08:14:01 +0000 +++ b/mysql-test/r/subquery_sj_innodb_all_jcl7.result 2010-11-24 08:16:05 +0000 @@ -145,6 +145,37 @@ id select_type table type possible_keys 1 PRIMARY t2 ALL NULL NULL NULL NULL 1 Using where 1 PRIMARY t3 ALL NULL NULL NULL NULL 2 FirstMatch(t2) drop table t2, t3; +# +# BUG#57431: subquery returns wrong result (semijoin=on) with pred AND +# +CREATE TABLE c ( +col_int_nokey INT DEFAULT NULL, +col_int_key INT DEFAULT NULL, +col_varchar_key VARCHAR(1) DEFAULT NULL, +col_varchar_nokey VARCHAR(1) DEFAULT NULL, +KEY col_int_key(col_int_key), +KEY col_varchar_key(col_varchar_key, col_int_key) +) ENGINE=InnoDB; +INSERT INTO c VALUES (NULL,2,'w','w'); +INSERT INTO c VALUES (2,9,'t','t'); +INSERT INTO c VALUES (2,3,'n','n'); +INSERT INTO c VALUES (4,2,'d','d'); +CREATE TABLE bb ( +col_int_nokey INT DEFAULT NULL, +col_int_key INT DEFAULT NULL, +col_varchar_key VARCHAR(1) DEFAULT NULL, +col_varchar_nokey VARCHAR(1) DEFAULT NULL, +KEY col_int_key(col_int_key), +KEY col_varchar_key(col_varchar_key, col_int_key) +) ENGINE=InnoDB; +INSERT INTO bb VALUES (8,8,NULL,NULL); +SELECT col_varchar_key +FROM c +WHERE col_int_nokey IN (SELECT INNR.col_int_nokey +FROM bb LEFT JOIN bb INNR ON INNR.col_varchar_nokey) +AND col_int_nokey = 2; +col_varchar_key +DROP TABLE c, bb; set optimizer_switch=default; set optimizer_join_cache_level=default; show variables like 'optimizer_join_cache_level'; === modified file 'mysql-test/r/subquery_sj_innodb_none.result' --- a/mysql-test/r/subquery_sj_innodb_none.result 2010-07-13 08:14:01 +0000 +++ b/mysql-test/r/subquery_sj_innodb_none.result 2010-11-24 08:16:05 +0000 @@ -141,4 +141,35 @@ id select_type table type possible_keys 2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 1 2 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (BNL, regular buffers) drop table t2, t3; +# +# BUG#57431: subquery returns wrong result (semijoin=on) with pred AND +# +CREATE TABLE c ( +col_int_nokey INT DEFAULT NULL, +col_int_key INT DEFAULT NULL, +col_varchar_key VARCHAR(1) DEFAULT NULL, +col_varchar_nokey VARCHAR(1) DEFAULT NULL, +KEY col_int_key(col_int_key), +KEY col_varchar_key(col_varchar_key, col_int_key) +) ENGINE=InnoDB; +INSERT INTO c VALUES (NULL,2,'w','w'); +INSERT INTO c VALUES (2,9,'t','t'); +INSERT INTO c VALUES (2,3,'n','n'); +INSERT INTO c VALUES (4,2,'d','d'); +CREATE TABLE bb ( +col_int_nokey INT DEFAULT NULL, +col_int_key INT DEFAULT NULL, +col_varchar_key VARCHAR(1) DEFAULT NULL, +col_varchar_nokey VARCHAR(1) DEFAULT NULL, +KEY col_int_key(col_int_key), +KEY col_varchar_key(col_varchar_key, col_int_key) +) ENGINE=InnoDB; +INSERT INTO bb VALUES (8,8,NULL,NULL); +SELECT col_varchar_key +FROM c +WHERE col_int_nokey IN (SELECT INNR.col_int_nokey +FROM bb LEFT JOIN bb INNR ON INNR.col_varchar_nokey) +AND col_int_nokey = 2; +col_varchar_key +DROP TABLE c, bb; set optimizer_switch=default; === modified file 'mysql-test/r/subquery_sj_innodb_none_jcl6.result' --- a/mysql-test/r/subquery_sj_innodb_none_jcl6.result 2010-07-13 08:14:01 +0000 +++ b/mysql-test/r/subquery_sj_innodb_none_jcl6.result 2010-11-24 08:16:05 +0000 @@ -145,6 +145,37 @@ id select_type table type possible_keys 2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 1 2 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (BNL, incremental buffers) drop table t2, t3; +# +# BUG#57431: subquery returns wrong result (semijoin=on) with pred AND +# +CREATE TABLE c ( +col_int_nokey INT DEFAULT NULL, +col_int_key INT DEFAULT NULL, +col_varchar_key VARCHAR(1) DEFAULT NULL, +col_varchar_nokey VARCHAR(1) DEFAULT NULL, +KEY col_int_key(col_int_key), +KEY col_varchar_key(col_varchar_key, col_int_key) +) ENGINE=InnoDB; +INSERT INTO c VALUES (NULL,2,'w','w'); +INSERT INTO c VALUES (2,9,'t','t'); +INSERT INTO c VALUES (2,3,'n','n'); +INSERT INTO c VALUES (4,2,'d','d'); +CREATE TABLE bb ( +col_int_nokey INT DEFAULT NULL, +col_int_key INT DEFAULT NULL, +col_varchar_key VARCHAR(1) DEFAULT NULL, +col_varchar_nokey VARCHAR(1) DEFAULT NULL, +KEY col_int_key(col_int_key), +KEY col_varchar_key(col_varchar_key, col_int_key) +) ENGINE=InnoDB; +INSERT INTO bb VALUES (8,8,NULL,NULL); +SELECT col_varchar_key +FROM c +WHERE col_int_nokey IN (SELECT INNR.col_int_nokey +FROM bb LEFT JOIN bb INNR ON INNR.col_varchar_nokey) +AND col_int_nokey = 2; +col_varchar_key +DROP TABLE c, bb; set optimizer_switch=default; set optimizer_join_cache_level=default; show variables like 'optimizer_join_cache_level'; === modified file 'mysql-test/r/subquery_sj_innodb_none_jcl7.result' --- a/mysql-test/r/subquery_sj_innodb_none_jcl7.result 2010-07-13 08:14:01 +0000 +++ b/mysql-test/r/subquery_sj_innodb_none_jcl7.result 2010-11-24 08:16:05 +0000 @@ -145,6 +145,37 @@ id select_type table type possible_keys 2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 1 2 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (BNL, regular buffers) drop table t2, t3; +# +# BUG#57431: subquery returns wrong result (semijoin=on) with pred AND +# +CREATE TABLE c ( +col_int_nokey INT DEFAULT NULL, +col_int_key INT DEFAULT NULL, +col_varchar_key VARCHAR(1) DEFAULT NULL, +col_varchar_nokey VARCHAR(1) DEFAULT NULL, +KEY col_int_key(col_int_key), +KEY col_varchar_key(col_varchar_key, col_int_key) +) ENGINE=InnoDB; +INSERT INTO c VALUES (NULL,2,'w','w'); +INSERT INTO c VALUES (2,9,'t','t'); +INSERT INTO c VALUES (2,3,'n','n'); +INSERT INTO c VALUES (4,2,'d','d'); +CREATE TABLE bb ( +col_int_nokey INT DEFAULT NULL, +col_int_key INT DEFAULT NULL, +col_varchar_key VARCHAR(1) DEFAULT NULL, +col_varchar_nokey VARCHAR(1) DEFAULT NULL, +KEY col_int_key(col_int_key), +KEY col_varchar_key(col_varchar_key, col_int_key) +) ENGINE=InnoDB; +INSERT INTO bb VALUES (8,8,NULL,NULL); +SELECT col_varchar_key +FROM c +WHERE col_int_nokey IN (SELECT INNR.col_int_nokey +FROM bb LEFT JOIN bb INNR ON INNR.col_varchar_nokey) +AND col_int_nokey = 2; +col_varchar_key +DROP TABLE c, bb; set optimizer_switch=default; set optimizer_join_cache_level=default; show variables like 'optimizer_join_cache_level'; === modified file 'sql/sql_select.cc' --- a/sql/sql_select.cc 2010-11-16 16:17:25 +0000 +++ b/sql/sql_select.cc 2010-11-24 08:16:05 +0000 @@ -17027,10 +17027,14 @@ sub_select_sjm(JOIN *join, JOIN_TAB *joi /* Do full scan of the materialized table */ JOIN_TAB *last_tab= join_tab + (sjm->table_count - 1); + Item *save_cond= last_tab->select_cond; + st_join_table *save_last_inner= last_tab->last_inner; last_tab->set_select_cond(sjm->join_cond, __LINE__); + last_tab->last_inner= NULL; rc= sub_select(join, last_tab, end_of_records); last_tab->set_select_cond(save_cond, __LINE__); + last_tab->last_inner= save_last_inner; DBUG_RETURN(rc); } else --===============6249270024026142529== 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: 3d76126b1c30d3958d3edf5c640a38237eb709da # timestamp: 2010-11-24 09:17:40 +0100 # base_revision_id: tor.didriksen@stripped\ # 86cs5woahaule77b # # Begin bundle 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 d/2OOCkeTds2CrhAgF3JFOFCQvmhwBA= --===============6249270024026142529==--