From: Roy Lyseng Date: March 3 2011 8:28am Subject: bzr commit into mysql-trunk branch (roy.lyseng:3346) Bug#11766739 List-Archive: http://lists.mysql.com/commits/132342 X-Bug: 11766739 Message-Id: <20110303082826.97B081F3@tyr67.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6931911812359567334==" --===============6931911812359567334== 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-work5/ based on revid:jorgen.loland@stripped 3346 Roy Lyseng 2011-03-03 Bug#11766739: Crash in tmp_table_param::init() with semijoin=on Used to be bug#59919. A crash occurs when a certain subquery is transformed with a semi join and a semi join materialization operation is attempted. The subquery contains a nested join structure (an outer join where the inner part is itself an inner join). Function setup_sj_materialization() tries to lookup the embedding semi join nest for an inner table of the subquery. However, it uses the pointer tab->table->pos_in_table_list->embedding, pointing to an outer join nest, instead of the correct pointer tab->emb_sj_nest. When dereferencing this pointer, a crash occurs. mysql-test/include/subquery_sj.inc Added test case for bug#11766739 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 results for bug#11766739 sql/sql_select.cc In setup_sj_materialization(), replaced use of pointer tab->table->pos_in_table_list->embedding with tab->emb_sj_nest. 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-01-27 11:38:22 +0000 +++ b/mysql-test/include/subquery_sj.inc 2011-03-03 08:27:44 +0000 @@ -3504,3 +3504,24 @@ deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; --echo # End of the test for bug#57623. + +--echo # +--echo # Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +--echo # + +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; + +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); + +let $query= +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 + FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +eval EXPLAIN $query; +eval $query; + +DROP TABLE t1, t2; + +--echo # End of the test for bug#11766739. === modified file 'mysql-test/r/subquery_sj_all.result' --- a/mysql-test/r/subquery_sj_all.result 2011-02-14 11:21:26 +0000 +++ b/mysql-test/r/subquery_sj_all.result 2011-03-03 08:27:44 +0000 @@ -5393,4 +5393,27 @@ a a a deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; # End of the test for bug#57623. +# +# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +# +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); +EXPLAIN SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t1 system NULL NULL NULL NULL 1 +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where +1 PRIMARY b1 ALL NULL NULL NULL NULL 2 Using where; Start materialize +1 PRIMARY b2 ALL NULL NULL NULL NULL 2 End materialize +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +f1 f2 +1 1 +2 1 +DROP TABLE t1, t2; +# End of the test for bug#11766739. set optimizer_switch=default; === modified file 'mysql-test/r/subquery_sj_all_jcl6.result' --- a/mysql-test/r/subquery_sj_all_jcl6.result 2011-02-14 11:21:26 +0000 +++ b/mysql-test/r/subquery_sj_all_jcl6.result 2011-03-03 08:27:44 +0000 @@ -5397,5 +5397,28 @@ a a a deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; # End of the test for bug#57623. +# +# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +# +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); +EXPLAIN SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t1 system NULL NULL NULL NULL 1 +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where +1 PRIMARY b1 ALL NULL NULL NULL NULL 2 Using where; Start materialize +1 PRIMARY b2 ALL NULL NULL NULL NULL 2 End materialize +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +f1 f2 +1 1 +2 1 +DROP TABLE t1, t2; +# End of the test for bug#11766739. 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-02-14 11:21:26 +0000 +++ b/mysql-test/r/subquery_sj_all_jcl7.result 2011-03-03 08:27:44 +0000 @@ -5397,5 +5397,28 @@ a a a deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; # End of the test for bug#57623. +# +# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +# +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); +EXPLAIN SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t1 system NULL NULL NULL NULL 1 +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where +1 PRIMARY b1 ALL NULL NULL NULL NULL 2 Using where; Start materialize +1 PRIMARY b2 ALL NULL NULL NULL NULL 2 End materialize +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +f1 f2 +1 1 +2 1 +DROP TABLE t1, t2; +# End of the test for bug#11766739. 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-02-14 11:21:26 +0000 +++ b/mysql-test/r/subquery_sj_dupsweed.result 2011-03-03 08:27:44 +0000 @@ -5392,4 +5392,27 @@ a a a deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; # End of the test for bug#57623. +# +# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +# +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); +EXPLAIN SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t1 system NULL NULL NULL NULL 1 +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Start temporary +1 PRIMARY b1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (BNL, incremental buffers) +1 PRIMARY b2 ALL NULL NULL NULL NULL 2 End temporary; Using join buffer (BNL, incremental buffers) +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +f1 f2 +1 1 +2 1 +DROP TABLE t1, t2; +# End of the test for bug#11766739. set optimizer_switch=default; === modified file 'mysql-test/r/subquery_sj_dupsweed_jcl6.result' --- a/mysql-test/r/subquery_sj_dupsweed_jcl6.result 2011-02-14 11:21:26 +0000 +++ b/mysql-test/r/subquery_sj_dupsweed_jcl6.result 2011-03-03 08:27:44 +0000 @@ -5396,5 +5396,28 @@ a a a deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; # End of the test for bug#57623. +# +# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +# +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); +EXPLAIN SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t1 system NULL NULL NULL NULL 1 +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Start temporary +1 PRIMARY b1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (BNL, incremental buffers) +1 PRIMARY b2 ALL NULL NULL NULL NULL 2 End temporary; Using join buffer (BNL, incremental buffers) +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +f1 f2 +1 1 +2 1 +DROP TABLE t1, t2; +# End of the test for bug#11766739. 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-02-14 11:21:26 +0000 +++ b/mysql-test/r/subquery_sj_dupsweed_jcl7.result 2011-03-03 08:27:44 +0000 @@ -5396,5 +5396,28 @@ a a a deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; # End of the test for bug#57623. +# +# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +# +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); +EXPLAIN SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t1 system NULL NULL NULL NULL 1 +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Start temporary +1 PRIMARY b1 ALL NULL NULL NULL NULL 2 Using where +1 PRIMARY b2 ALL NULL NULL NULL NULL 2 End temporary +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +f1 f2 +1 1 +2 1 +DROP TABLE t1, t2; +# End of the test for bug#11766739. 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-02-14 11:21:26 +0000 +++ b/mysql-test/r/subquery_sj_firstmatch.result 2011-03-03 08:27:44 +0000 @@ -5394,6 +5394,29 @@ deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; # End of the test for bug#57623. # +# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +# +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); +EXPLAIN SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t1 system NULL NULL NULL NULL 1 +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where +1 PRIMARY b1 ALL NULL NULL NULL NULL 2 Using where +1 PRIMARY b2 ALL NULL NULL NULL NULL 2 FirstMatch(t2) +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +f1 f2 +1 1 +2 1 +DROP TABLE t1, t2; +# End of the test for bug#11766739. +# # 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-02-14 11:21:26 +0000 +++ b/mysql-test/r/subquery_sj_firstmatch_jcl6.result 2011-03-03 08:27:44 +0000 @@ -5398,6 +5398,29 @@ deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; # End of the test for bug#57623. # +# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +# +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); +EXPLAIN SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t1 system NULL NULL NULL NULL 1 +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where +1 PRIMARY b1 ALL NULL NULL NULL NULL 2 Using where +1 PRIMARY b2 ALL NULL NULL NULL NULL 2 FirstMatch(t2) +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +f1 f2 +1 1 +2 1 +DROP TABLE t1, t2; +# End of the test for bug#11766739. +# # 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-02-14 11:21:26 +0000 +++ b/mysql-test/r/subquery_sj_firstmatch_jcl7.result 2011-03-03 08:27:44 +0000 @@ -5398,6 +5398,29 @@ deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; # End of the test for bug#57623. # +# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +# +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); +EXPLAIN SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t1 system NULL NULL NULL NULL 1 +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where +1 PRIMARY b1 ALL NULL NULL NULL NULL 2 Using where +1 PRIMARY b2 ALL NULL NULL NULL NULL 2 FirstMatch(t2) +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +f1 f2 +1 1 +2 1 +DROP TABLE t1, t2; +# End of the test for bug#11766739. +# # 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-02-14 11:21:26 +0000 +++ b/mysql-test/r/subquery_sj_loosescan.result 2011-03-03 08:27:44 +0000 @@ -5393,4 +5393,27 @@ a a a deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; # End of the test for bug#57623. +# +# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +# +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); +EXPLAIN SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t1 system NULL NULL NULL NULL 1 +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Start temporary +1 PRIMARY b1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (BNL, incremental buffers) +1 PRIMARY b2 ALL NULL NULL NULL NULL 2 End temporary; Using join buffer (BNL, incremental buffers) +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +f1 f2 +1 1 +2 1 +DROP TABLE t1, t2; +# End of the test for bug#11766739. set optimizer_switch=default; === modified file 'mysql-test/r/subquery_sj_loosescan_jcl6.result' --- a/mysql-test/r/subquery_sj_loosescan_jcl6.result 2011-02-14 11:21:26 +0000 +++ b/mysql-test/r/subquery_sj_loosescan_jcl6.result 2011-03-03 08:27:44 +0000 @@ -5397,5 +5397,28 @@ a a a deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; # End of the test for bug#57623. +# +# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +# +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); +EXPLAIN SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t1 system NULL NULL NULL NULL 1 +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Start temporary +1 PRIMARY b1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (BNL, incremental buffers) +1 PRIMARY b2 ALL NULL NULL NULL NULL 2 End temporary; Using join buffer (BNL, incremental buffers) +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +f1 f2 +1 1 +2 1 +DROP TABLE t1, t2; +# End of the test for bug#11766739. 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-02-14 11:21:26 +0000 +++ b/mysql-test/r/subquery_sj_loosescan_jcl7.result 2011-03-03 08:27:44 +0000 @@ -5397,5 +5397,28 @@ a a a deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; # End of the test for bug#57623. +# +# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +# +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); +EXPLAIN SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t1 system NULL NULL NULL NULL 1 +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Start temporary +1 PRIMARY b1 ALL NULL NULL NULL NULL 2 Using where +1 PRIMARY b2 ALL NULL NULL NULL NULL 2 End temporary +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +f1 f2 +1 1 +2 1 +DROP TABLE t1, t2; +# End of the test for bug#11766739. 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-02-14 11:21:26 +0000 +++ b/mysql-test/r/subquery_sj_mat.result 2011-03-03 08:27:44 +0000 @@ -5393,4 +5393,27 @@ a a a deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; # End of the test for bug#57623. +# +# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +# +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); +EXPLAIN SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t1 system NULL NULL NULL NULL 1 +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where +1 PRIMARY b1 ALL NULL NULL NULL NULL 2 Using where; Start materialize +1 PRIMARY b2 ALL NULL NULL NULL NULL 2 End materialize +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +f1 f2 +1 1 +2 1 +DROP TABLE t1, t2; +# End of the test for bug#11766739. set optimizer_switch=default; === modified file 'mysql-test/r/subquery_sj_mat_jcl6.result' --- a/mysql-test/r/subquery_sj_mat_jcl6.result 2011-02-14 11:21:26 +0000 +++ b/mysql-test/r/subquery_sj_mat_jcl6.result 2011-03-03 08:27:44 +0000 @@ -5397,5 +5397,28 @@ a a a deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; # End of the test for bug#57623. +# +# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +# +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); +EXPLAIN SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t1 system NULL NULL NULL NULL 1 +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where +1 PRIMARY b1 ALL NULL NULL NULL NULL 2 Using where; Start materialize +1 PRIMARY b2 ALL NULL NULL NULL NULL 2 End materialize +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +f1 f2 +1 1 +2 1 +DROP TABLE t1, t2; +# End of the test for bug#11766739. 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-02-14 11:21:26 +0000 +++ b/mysql-test/r/subquery_sj_mat_jcl7.result 2011-03-03 08:27:44 +0000 @@ -5397,5 +5397,28 @@ a a a deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; # End of the test for bug#57623. +# +# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +# +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); +EXPLAIN SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t1 system NULL NULL NULL NULL 1 +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where +1 PRIMARY b1 ALL NULL NULL NULL NULL 2 Using where; Start materialize +1 PRIMARY b2 ALL NULL NULL NULL NULL 2 End materialize +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +f1 f2 +1 1 +2 1 +DROP TABLE t1, t2; +# End of the test for bug#11766739. 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-02-14 11:21:26 +0000 +++ b/mysql-test/r/subquery_sj_mat_nosj.result 2011-03-03 08:27:44 +0000 @@ -5615,4 +5615,27 @@ a a a deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; # End of the test for bug#57623. +# +# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +# +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); +EXPLAIN SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where +2 SUBQUERY t1 system NULL NULL NULL NULL 1 +2 SUBQUERY b1 ALL NULL NULL NULL NULL 2 Using where +2 SUBQUERY b2 ALL NULL NULL NULL NULL 2 +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +f1 f2 +1 1 +2 1 +DROP TABLE t1, t2; +# End of the test for bug#11766739. set optimizer_switch=default; === modified file 'mysql-test/r/subquery_sj_none.result' --- a/mysql-test/r/subquery_sj_none.result 2011-02-14 11:21:26 +0000 +++ b/mysql-test/r/subquery_sj_none.result 2011-03-03 08:27:44 +0000 @@ -5538,4 +5538,27 @@ a a a deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; # End of the test for bug#57623. +# +# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +# +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); +EXPLAIN SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where +2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 1 +2 DEPENDENT SUBQUERY b1 ALL NULL NULL NULL NULL 2 Using where +2 DEPENDENT SUBQUERY b2 ALL NULL NULL NULL NULL 2 +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +f1 f2 +1 1 +2 1 +DROP TABLE t1, t2; +# End of the test for bug#11766739. set optimizer_switch=default; === modified file 'mysql-test/r/subquery_sj_none_jcl6.result' --- a/mysql-test/r/subquery_sj_none_jcl6.result 2011-02-14 11:21:26 +0000 +++ b/mysql-test/r/subquery_sj_none_jcl6.result 2011-03-03 08:27:44 +0000 @@ -5542,5 +5542,28 @@ a a a deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; # End of the test for bug#57623. +# +# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +# +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); +EXPLAIN SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where +2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 1 +2 DEPENDENT SUBQUERY b1 ALL NULL NULL NULL NULL 2 Using where +2 DEPENDENT SUBQUERY b2 ALL NULL NULL NULL NULL 2 +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +f1 f2 +1 1 +2 1 +DROP TABLE t1, t2; +# End of the test for bug#11766739. 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-02-14 11:21:26 +0000 +++ b/mysql-test/r/subquery_sj_none_jcl7.result 2011-03-03 08:27:44 +0000 @@ -5542,5 +5542,28 @@ a a a deallocate prepare s; DROP TABLE ot1, ot2, ot3, it1; # End of the test for bug#57623. +# +# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on +# +CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; +CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1,1), (2,1); +EXPLAIN SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where +2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 1 +2 DEPENDENT SUBQUERY b1 ALL NULL NULL NULL NULL 2 Using where +2 DEPENDENT SUBQUERY b2 ALL NULL NULL NULL NULL 2 +SELECT * FROM t2 +WHERE f2 IN (SELECT t1.f1 +FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); +f1 f2 +1 1 +2 1 +DROP TABLE t1, t2; +# End of the test for bug#11766739. set optimizer_switch=default; set optimizer_join_cache_level=default; === modified file 'sql/sql_select.cc' --- a/sql/sql_select.cc 2011-02-16 09:31:18 +0000 +++ b/sql/sql_select.cc 2011-03-03 08:27:44 +0000 @@ -10920,7 +10920,7 @@ bool setup_sj_materialization(JOIN_TAB * { uint i; DBUG_ENTER("setup_sj_materialization"); - TABLE_LIST *emb_sj_nest= tab->table->pos_in_table_list->embedding; + TABLE_LIST *emb_sj_nest= tab->emb_sj_nest; Semijoin_mat_exec *sjm= emb_sj_nest->sj_mat_exec; THD *thd= tab->join->thd; /* First the calls come to the materialization function */ --===============6931911812359567334== 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-work5/ # testament_sha1: 889dcd989c712d7c5b56c1267b51f196775c1b7b # timestamp: 2011-03-03 09:28:26 +0100 # base_revision_id: jorgen.loland@stripped\ # cppv2v1z0yzrng1b # # Begin bundle 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 AbE= --===============6931911812359567334==--