diff options
author | holyfoot/hf@hfmain.(none) <> | 2007-03-09 16:51:32 +0400 |
---|---|---|
committer | holyfoot/hf@hfmain.(none) <> | 2007-03-09 16:51:32 +0400 |
commit | eca8b1a62d6adcf626e1620e6a988b1077f49ca7 (patch) | |
tree | 21132a2634a78e6b5d8c1aa06b42bae2e2ec4aa0 | |
parent | 71e6d69647ca4f483cf4fed359b642bb616c8cc5 (diff) | |
parent | e10d74cff9dd08fb1d5376f79da8d0dbf215e8dd (diff) | |
download | mariadb-git-eca8b1a62d6adcf626e1620e6a988b1077f49ca7.tar.gz |
Merge mysql.com:/home/hf/work/mrg/mysql-5.0-opt
into mysql.com:/home/hf/work/mrg/mysql-5.1-opt
-rw-r--r-- | mysql-test/r/union.result | 11 | ||||
-rw-r--r-- | mysql-test/t/union.test | 13 | ||||
-rw-r--r-- | sql/item.cc | 7 |
3 files changed, 30 insertions, 1 deletions
diff --git a/mysql-test/r/union.result b/mysql-test/r/union.result index 9805b788a73..2a465364045 100644 --- a/mysql-test/r/union.result +++ b/mysql-test/r/union.result @@ -1426,4 +1426,15 @@ select _utf8'12' union select _latin1'12345'; 12 12 12345 +CREATE TABLE t1 (a int); +INSERT INTO t1 VALUES (3),(1),(2),(4),(1); +SELECT a FROM (SELECT a FROM t1 UNION SELECT a FROM t1 ORDER BY a) AS test; +a +1 +2 +3 +4 +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; End of 5.0 tests diff --git a/mysql-test/t/union.test b/mysql-test/t/union.test index 2bdf8420d6d..cc93fbd715a 100644 --- a/mysql-test/t/union.test +++ b/mysql-test/t/union.test @@ -900,4 +900,17 @@ drop table t1, t2; # select _utf8'12' union select _latin1'12345'; +# +# Bug #26661: UNION with ORDER BY undefined column in FROM list +# + +CREATE TABLE t1 (a int); +INSERT INTO t1 VALUES (3),(1),(2),(4),(1); + +SELECT a FROM (SELECT a FROM t1 UNION SELECT a FROM t1 ORDER BY a) AS test; +--error 1054 +SELECT a FROM (SELECT a FROM t1 UNION SELECT a FROM t1 ORDER BY c) AS test; + +DROP TABLE t1; + --echo End of 5.0 tests diff --git a/sql/item.cc b/sql/item.cc index f2ec94bb92e..19f5c215274 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -3475,7 +3475,12 @@ Item_field::fix_outer_field(THD *thd, Field **from_field, Item **reference) */ Name_resolution_context *last_checked_context= context; Item **ref= (Item **) not_found_item; - Name_resolution_context *outer_context= context->outer_context; + SELECT_LEX *current_sel= (SELECT_LEX *) thd->lex->current_select; + Name_resolution_context *outer_context= 0; + /* Currently derived tables cannot be correlated */ + if (current_sel->master_unit()->first_select()->linkage != + DERIVED_TABLE_TYPE) + outer_context= context->outer_context; for (; outer_context; outer_context= outer_context->outer_context) |