From: Date: July 3 2009 5:31pm Subject: bzr commit into mysql-5.0-bugteam branch (gshchepa:2793) Bug#41156 List-Archive: http://lists.mysql.com/commits/77922 X-Bug: 41156 Message-Id: <20090703153153.1D34040C4E3@localhost.localdomain> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary_(ID_8+tswqcmV8Z1TheIbrZCFA)" --Boundary_(ID_8+tswqcmV8Z1TheIbrZCFA) MIME-version: 1.0 Content-type: text/plain; CHARSET=US-ASCII Content-transfer-encoding: 7BIT Content-disposition: inline #At file:///work/bzr/41156-5.0/ based on revid:sergey.glukhov@stripped 2793 Gleb Shchepa 2009-07-03 Bug #41156: List of derived tables acts like a chain of mutually-nested subqueries The select_derived2 parser rule calls mysql_new_select() calls push_context() and nest_level++, however only the pop_context() was called at the end of derived table parsing at the table_factor rule. The table_factor parser rule has been modified to adjust the LEX::nest_level variable value after every derived table. @ mysql-test/r/derived.result Added test case for bug #41156. @ mysql-test/t/derived.test Added test case for bug #41156. @ sql/sql_yacc.yy Bug #41156: List of derived tables acts like a chain of mutually-nested subqueries The table_factor parser rule has been modified to adjust the LEX::nest_level variable value after every derived table. modified: mysql-test/r/derived.result mysql-test/t/derived.test sql/sql_yacc.yy === modified file 'mysql-test/r/derived.result' --- a/mysql-test/r/derived.result 2007-10-29 11:11:05 +0000 +++ b/mysql-test/r/derived.result 2009-07-03 15:31:26 +0000 @@ -383,3 +383,21 @@ select t2.* from (select * from t1) as A ID DATA FID drop table t1, t2; drop user mysqltest_1; +# End of 4.1 tests +SELECT 0 FROM +(SELECT 0) t01, (SELECT 0) t02, (SELECT 0) t03, (SELECT 0) t04, (SELECT 0) t05, +(SELECT 0) t06, (SELECT 0) t07, (SELECT 0) t08, (SELECT 0) t09, (SELECT 0) t10, +(SELECT 0) t11, (SELECT 0) t12, (SELECT 0) t13, (SELECT 0) t14, (SELECT 0) t15, +(SELECT 0) t16, (SELECT 0) t17, (SELECT 0) t18, (SELECT 0) t19, (SELECT 0) t20, +(SELECT 0) t21, (SELECT 0) t22, (SELECT 0) t23, (SELECT 0) t24, (SELECT 0) t25, +(SELECT 0) t26, (SELECT 0) t27, (SELECT 0) t28, (SELECT 0) t29, (SELECT 0) t30, +(SELECT 0) t31, (SELECT 0) t32, (SELECT 0) t33, (SELECT 0) t34, (SELECT 0) t35, +(SELECT 0) t36, (SELECT 0) t37, (SELECT 0) t38, (SELECT 0) t39, (SELECT 0) t40, +(SELECT 0) t41, (SELECT 0) t42, (SELECT 0) t43, (SELECT 0) t44, (SELECT 0) t45, +(SELECT 0) t46, (SELECT 0) t47, (SELECT 0) t48, (SELECT 0) t49, (SELECT 0) t50, +(SELECT 0) t51, (SELECT 0) t52, (SELECT 0) t53, (SELECT 0) t54, (SELECT 0) t55, +(SELECT 0) t56, (SELECT 0) t57, (SELECT 0) t58, (SELECT 0) t59, (SELECT 0) t60, +(SELECT 0) t61; +0 +0 +# End of 5.0 tests === modified file 'mysql-test/t/derived.test' --- a/mysql-test/t/derived.test 2007-10-29 11:11:05 +0000 +++ b/mysql-test/t/derived.test 2009-07-03 15:31:26 +0000 @@ -277,4 +277,26 @@ disconnect con1; connection default; drop user mysqltest_1; -# End of 4.1 tests +--echo # End of 4.1 tests + +# +# Bug #41156: List of derived tables acts like a chain of +# mutually-nested subqueries +# + +SELECT 0 FROM +(SELECT 0) t01, (SELECT 0) t02, (SELECT 0) t03, (SELECT 0) t04, (SELECT 0) t05, +(SELECT 0) t06, (SELECT 0) t07, (SELECT 0) t08, (SELECT 0) t09, (SELECT 0) t10, +(SELECT 0) t11, (SELECT 0) t12, (SELECT 0) t13, (SELECT 0) t14, (SELECT 0) t15, +(SELECT 0) t16, (SELECT 0) t17, (SELECT 0) t18, (SELECT 0) t19, (SELECT 0) t20, +(SELECT 0) t21, (SELECT 0) t22, (SELECT 0) t23, (SELECT 0) t24, (SELECT 0) t25, +(SELECT 0) t26, (SELECT 0) t27, (SELECT 0) t28, (SELECT 0) t29, (SELECT 0) t30, +(SELECT 0) t31, (SELECT 0) t32, (SELECT 0) t33, (SELECT 0) t34, (SELECT 0) t35, +(SELECT 0) t36, (SELECT 0) t37, (SELECT 0) t38, (SELECT 0) t39, (SELECT 0) t40, +(SELECT 0) t41, (SELECT 0) t42, (SELECT 0) t43, (SELECT 0) t44, (SELECT 0) t45, +(SELECT 0) t46, (SELECT 0) t47, (SELECT 0) t48, (SELECT 0) t49, (SELECT 0) t50, +(SELECT 0) t51, (SELECT 0) t52, (SELECT 0) t53, (SELECT 0) t54, (SELECT 0) t55, +(SELECT 0) t56, (SELECT 0) t57, (SELECT 0) t58, (SELECT 0) t59, (SELECT 0) t60, +(SELECT 0) t61; # 61 == MAX_TABLES + +--echo # End of 5.0 tests === modified file 'sql/sql_yacc.yy' --- a/sql/sql_yacc.yy 2009-06-17 13:54:01 +0000 +++ b/sql/sql_yacc.yy 2009-07-03 15:31:26 +0000 @@ -6791,6 +6791,7 @@ table_factor: MYSQL_YYABORT; sel->add_joined_table($$); lex->pop_context(); + lex->nest_level--; } else if ($4 || $6) @@ -6800,7 +6801,11 @@ table_factor: MYSQL_YYABORT; } else + { + /* nested join: FROM (t1 JOIN t2 ...), + nest_level is the same as in the outer query */ $$= $3; + } } ; --Boundary_(ID_8+tswqcmV8Z1TheIbrZCFA) MIME-version: 1.0 Content-type: text/bzr-bundle; CHARSET=US-ASCII; name="bzr/gshchepa@stripped" Content-transfer-encoding: 7BIT Content-disposition: inline; filename="bzr/gshchepa@stripped" # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: gshchepa@stripped # target_branch: file:///work/bzr/41156-5.0/ # testament_sha1: b296c8742272d98220c1776a4fde676d68719cc8 # timestamp: 2009-07-03 20:31:31 +0500 # base_revision_id: sergey.glukhov@stripped\ # jq8vhw0tqr37j7te # # Begin bundle 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 hOwCqSmzOr1UD+LuSKcKEhIb73Cg --Boundary_(ID_8+tswqcmV8Z1TheIbrZCFA)--