From: Sergey Glukhov Date: March 26 2010 7:44am Subject: bzr commit into mysql-5.0-bugteam branch (Sergey.Glukhov:2854) Bug#52177 List-Archive: http://lists.mysql.com/commits/104596 X-Bug: 52177 Message-Id: <0L0300JIF461UMF0@fe-emea-10.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary_(ID_tTMcRSAmI68YURfVUtpYTw)" --Boundary_(ID_tTMcRSAmI68YURfVUtpYTw) MIME-version: 1.0 Content-type: text/plain; CHARSET=US-ASCII Content-transfer-encoding: 7BIT Content-disposition: inline #At file:///home/gluh/MySQL/mysql-5.0-bugteam/ based on revid:sergey.glukhov@stripped 2854 Sergey Glukhov 2010-03-26 Bug#52177 crash with explain, row comparison, join, text field The crash is the result of an attempt made by JOIN::optimize to evaluate the WHERE condition when no records have been actually read. The fix is to remove erroneous 'outer_join' variable check. @ mysql-test/r/join.result test result @ mysql-test/t/join.test test case @ sql/sql_select.cc removed erroneous 'outer_join' variable check. modified: mysql-test/r/join.result mysql-test/t/join.test sql/sql_select.cc === modified file 'mysql-test/r/join.result' --- a/mysql-test/r/join.result 2010-03-24 10:37:28 +0000 +++ b/mysql-test/r/join.result 2010-03-26 07:44:24 +0000 @@ -930,4 +930,16 @@ Warnings: Note 1003 select 1 AS `1` from `test`.`t1` left join `test`.`t1` `t2` on((1 = 1)) left join (`test`.`t1` left join `test`.`t1` `t2` on((1 = 1))) on(rand()) where 1 DROP VIEW v1; DROP TABLE t1; +# +# Bug#52177 crash with explain, row comparison, join, text field +# +CREATE TABLE t1 (a TINYINT, b TEXT, KEY (a)); +INSERT INTO t1 VALUES (0,''),(0,''); +FLUSH TABLES; +EXPLAIN SELECT 1 FROM t1 LEFT JOIN t1 a ON 1 +WHERE ROW(t1.a, 1111.11) = ROW(1111.11, 1111.11) AND +ROW(t1.b, 1111.11) <=> ROW('',''); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +DROP TABLE t1; End of 5.0 tests. === modified file 'mysql-test/t/join.test' --- a/mysql-test/t/join.test 2010-03-24 10:37:28 +0000 +++ b/mysql-test/t/join.test 2010-03-26 07:44:24 +0000 @@ -725,4 +725,15 @@ SELECT 1 FROM v1 right join v1 AS v2 ON DROP VIEW v1; DROP TABLE t1; +--echo # +--echo # Bug#52177 crash with explain, row comparison, join, text field +--echo # +CREATE TABLE t1 (a TINYINT, b TEXT, KEY (a)); +INSERT INTO t1 VALUES (0,''),(0,''); +FLUSH TABLES; +EXPLAIN SELECT 1 FROM t1 LEFT JOIN t1 a ON 1 +WHERE ROW(t1.a, 1111.11) = ROW(1111.11, 1111.11) AND +ROW(t1.b, 1111.11) <=> ROW('',''); +DROP TABLE t1; + --echo End of 5.0 tests. === modified file 'sql/sql_select.cc' --- a/sql/sql_select.cc 2010-03-24 10:37:28 +0000 +++ b/sql/sql_select.cc 2010-03-26 07:44:24 +0000 @@ -1029,7 +1029,7 @@ JOIN::optimize() } } - if (conds &&!outer_join && const_table_map != found_const_table_map && + if (conds && const_table_map != found_const_table_map && (select_options & SELECT_DESCRIBE) && select_lex->master_unit() == &thd->lex->unit) // upper level SELECT { --Boundary_(ID_tTMcRSAmI68YURfVUtpYTw) MIME-version: 1.0 Content-type: text/bzr-bundle; CHARSET=US-ASCII; name="bzr/sergey.glukhov@stripped" Content-transfer-encoding: 7BIT Content-disposition: inline; filename="bzr/sergey.glukhov@stripped" # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: sergey.glukhov@stripped # target_branch: file:///home/gluh/MySQL/mysql-5.0-bugteam/ # testament_sha1: db983cf67bbbe318d1a064ba0ea2afd18382acb0 # timestamp: 2010-03-26 11:44:33 +0400 # base_revision_id: sergey.glukhov@stripped\ # lkiflp9a3nq3x5ez # # Begin bundle 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 --Boundary_(ID_tTMcRSAmI68YURfVUtpYTw)--