From: Date: March 20 2007 9:59pm Subject: bk commit into 5.0 tree (evgen:1.2487) BUG#23345 List-Archive: http://lists.mysql.com/commits/22420 X-Bug: 23345 Message-Id: <20070320205944.5FBF122D159@moonbone.moonbone.local> Below is the list of changes that have just been committed into a local 5.0 repository of evgen. When evgen does a push these changes will be propagated to the main repository and, within 24 hours after the push, to the public repository. For information on how to access the public repository see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html ChangeSet@stripped, 2007-03-20 23:59:41+03:00, evgen@stripped +3 -0 Bug#23345: Wrongly allowed INTO in a non-last select of a UNION. INTO clause can be specified only for the last select of a UNION and it receives the result of the whole query. But it was wrongly allowed in non-last selects of a UNION which leads to a confusing query result. Now INTO allowed only in the last select of a UNION. mysql-test/r/union.result@stripped, 2007-03-20 23:58:26+03:00, evgen@stripped +8 -0 Added a test case for the bug#23345: Wrongly allowed INTO in a non-last select of a UNION. mysql-test/t/union.test@stripped, 2007-03-20 23:58:15+03:00, evgen@stripped +9 -0 Added a test case for the bug#23345: Wrongly allowed INTO in a non-last select of a UNION. sql/sql_yacc.yy@stripped, 2007-03-20 23:58:40+03:00, evgen@stripped +1 -1 Bug#23345: Wrongly allowed INTO in a non-last select of a UNION. Now INTO allowed only in the last select of a UNION. # This is a BitKeeper patch. What follows are the unified diffs for the # set of deltas contained in the patch. The rest of the patch, the part # that BitKeeper cares about, is below these diffs. # User: evgen # Host: moonbone.local # Root: /mnt/gentoo64/work/23345-bug-5.0-opt-mysql --- 1.510/sql/sql_yacc.yy 2007-03-09 17:25:24 +03:00 +++ 1.511/sql/sql_yacc.yy 2007-03-20 23:58:40 +03:00 @@ -9307,7 +9307,7 @@ UNION_SYM union_option { LEX *lex=Lex; - if (lex->exchange) + if (lex->exchange || lex->result) { /* Only the last SELECT can have INTO...... */ my_error(ER_WRONG_USAGE, MYF(0), "UNION", "INTO"); --- 1.89/mysql-test/r/union.result 2007-03-10 19:50:55 +03:00 +++ 1.90/mysql-test/r/union.result 2007-03-20 23:58:26 +03:00 @@ -1381,4 +1381,12 @@ SELECT a FROM (SELECT a FROM t1 UNION SELECT a FROM t1 ORDER BY c) AS test; ERROR 42S22: Unknown column 'c' in 'order clause' DROP TABLE t1; +(select 1 into @var) union (select 1); +ERROR HY000: Incorrect usage of UNION and INTO +(select 1) union (select 1 into @var); +select @var; +@var +1 +(select 2) union (select 1 into @var); +ERROR 42000: Result consisted of more than one row End of 5.0 tests --- 1.98/mysql-test/t/union.test 2007-03-09 12:45:30 +03:00 +++ 1.99/mysql-test/t/union.test 2007-03-20 23:58:15 +03:00 @@ -868,4 +868,13 @@ DROP TABLE t1; +# +# Bug#23345: Wrongly allowed INTO in a non-last select of a UNION. +# +--error 1221 +(select 1 into @var) union (select 1); +(select 1) union (select 1 into @var); +select @var; +--error 1172 +(select 2) union (select 1 into @var); --echo End of 5.0 tests