diff options
author | unknown <Sinisa@sinisa.nasamreza.org> | 2002-12-02 20:18:51 +0200 |
---|---|---|
committer | unknown <Sinisa@sinisa.nasamreza.org> | 2002-12-02 20:18:51 +0200 |
commit | 47af809c617a9582a71ff0a13aeed4c74d848ef6 (patch) | |
tree | 374595893cfcdc147203da32bfac612391bffa8d /sql | |
parent | 36429430c6bd18b7cccd459711ddd0ab30a2e63e (diff) | |
download | mariadb-git-47af809c617a9582a71ff0a13aeed4c74d848ef6.tar.gz |
Proper handling of ORDER BY table.column in UNION's
Diffstat (limited to 'sql')
-rw-r--r-- | sql/item.cc | 8 | ||||
-rw-r--r-- | sql/share/czech/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/danish/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/dutch/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/english/errmsg.txt | 3 | ||||
-rw-r--r-- | sql/share/estonian/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/french/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/german/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/greek/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/hungarian/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/italian/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/japanese/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/korean/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/norwegian-ny/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/norwegian/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/polish/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/portuguese/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/romanian/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/russian/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/serbian/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/slovak/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/spanish/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/swedish/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/share/ukrainian/errmsg.txt | 1 | ||||
-rw-r--r-- | sql/sql_base.cc | 10 |
25 files changed, 35 insertions, 8 deletions
diff --git a/sql/item.cc b/sql/item.cc index 180a558da37..1c46f9abb7e 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -535,12 +535,10 @@ bool Item_field::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref) SELECT_LEX *last= 0; Item **refer= (Item **)not_found_item; - SELECT_LEX *cursel=(SELECT_LEX *) thd->lex.current_select; // Prevent using outer fields in subselects, that is not supported now + SELECT_LEX *cursel=(SELECT_LEX *) thd->lex.current_select; if (cursel->linkage != DERIVED_TABLE_TYPE) - for (SELECT_LEX *sl= (cursel->get_master()->order_list.elements) ? - cursel->select_lex() - : cursel->outer_select(); + for (SELECT_LEX *sl=cursel->outer_select(); sl; sl= sl->outer_select()) { @@ -576,7 +574,7 @@ bool Item_field::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref) if (r->check_cols(1) || r->fix_fields(thd, tables, ref)) return 1; r->depended_from= last; - thd->lex.current_select->mark_as_dependent(last); + cursel->mark_as_dependent(last); thd->add_possible_loop(r); return 0; } diff --git a/sql/share/czech/errmsg.txt b/sql/share/czech/errmsg.txt index 31d47b821e0..38aa3c1b8b1 100644 --- a/sql/share/czech/errmsg.txt +++ b/sql/share/czech/errmsg.txt @@ -258,3 +258,4 @@ v/* "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/danish/errmsg.txt b/sql/share/danish/errmsg.txt index ca5a6918517..845a98e8aac 100644 --- a/sql/share/danish/errmsg.txt +++ b/sql/share/danish/errmsg.txt @@ -252,3 +252,4 @@ "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/dutch/errmsg.txt b/sql/share/dutch/errmsg.txt index 6f5754dee76..ea1aded30ff 100644 --- a/sql/share/dutch/errmsg.txt +++ b/sql/share/dutch/errmsg.txt @@ -260,3 +260,4 @@ "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/english/errmsg.txt b/sql/share/english/errmsg.txt index 66ca9eab596..bac2ceef9e1 100644 --- a/sql/share/english/errmsg.txt +++ b/sql/share/english/errmsg.txt @@ -247,5 +247,6 @@ "Cyclic reference on subqueries", "Converting column '%s' from %s to %s", "Reference '%-.64s' not supported (%s)", -"Every derived table must have it's own alias" +"Every derived table must have it's own alias", "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/estonian/errmsg.txt b/sql/share/estonian/errmsg.txt index 757ae5b6443..f614523034f 100644 --- a/sql/share/estonian/errmsg.txt +++ b/sql/share/estonian/errmsg.txt @@ -254,3 +254,4 @@ "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/french/errmsg.txt b/sql/share/french/errmsg.txt index 43952d848c4..b71ffdf90d7 100644 --- a/sql/share/french/errmsg.txt +++ b/sql/share/french/errmsg.txt @@ -249,3 +249,4 @@ "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/german/errmsg.txt b/sql/share/german/errmsg.txt index f9a70feb549..547b088fb32 100644 --- a/sql/share/german/errmsg.txt +++ b/sql/share/german/errmsg.txt @@ -252,3 +252,4 @@ "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/greek/errmsg.txt b/sql/share/greek/errmsg.txt index 9410c3d69bb..c7919344949 100644 --- a/sql/share/greek/errmsg.txt +++ b/sql/share/greek/errmsg.txt @@ -249,3 +249,4 @@ "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/hungarian/errmsg.txt b/sql/share/hungarian/errmsg.txt index 1410a88af4a..bb91baa804b 100644 --- a/sql/share/hungarian/errmsg.txt +++ b/sql/share/hungarian/errmsg.txt @@ -251,3 +251,4 @@ "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/italian/errmsg.txt b/sql/share/italian/errmsg.txt index 499c06e64dc..bb679765f24 100644 --- a/sql/share/italian/errmsg.txt +++ b/sql/share/italian/errmsg.txt @@ -249,3 +249,4 @@ "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/japanese/errmsg.txt b/sql/share/japanese/errmsg.txt index 90a6e23efbd..856cfee6c66 100644 --- a/sql/share/japanese/errmsg.txt +++ b/sql/share/japanese/errmsg.txt @@ -251,3 +251,4 @@ "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/korean/errmsg.txt b/sql/share/korean/errmsg.txt index f05ab3148eb..02858ec652b 100644 --- a/sql/share/korean/errmsg.txt +++ b/sql/share/korean/errmsg.txt @@ -249,3 +249,4 @@ "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/norwegian-ny/errmsg.txt b/sql/share/norwegian-ny/errmsg.txt index 5e75877145c..566837c69b1 100644 --- a/sql/share/norwegian-ny/errmsg.txt +++ b/sql/share/norwegian-ny/errmsg.txt @@ -251,3 +251,4 @@ "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/norwegian/errmsg.txt b/sql/share/norwegian/errmsg.txt index 4330827fe1c..1d1210e3583 100644 --- a/sql/share/norwegian/errmsg.txt +++ b/sql/share/norwegian/errmsg.txt @@ -251,3 +251,4 @@ "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/polish/errmsg.txt b/sql/share/polish/errmsg.txt index db5b97554ff..786959ad57f 100644 --- a/sql/share/polish/errmsg.txt +++ b/sql/share/polish/errmsg.txt @@ -253,3 +253,4 @@ "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/portuguese/errmsg.txt b/sql/share/portuguese/errmsg.txt index 80c1b498345..a9ec6342f91 100644 --- a/sql/share/portuguese/errmsg.txt +++ b/sql/share/portuguese/errmsg.txt @@ -249,3 +249,4 @@ "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/romanian/errmsg.txt b/sql/share/romanian/errmsg.txt index 59f6e550650..29ae6e0116c 100644 --- a/sql/share/romanian/errmsg.txt +++ b/sql/share/romanian/errmsg.txt @@ -253,3 +253,4 @@ "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/russian/errmsg.txt b/sql/share/russian/errmsg.txt index fafcc61f60a..acce609db92 100644 --- a/sql/share/russian/errmsg.txt +++ b/sql/share/russian/errmsg.txt @@ -252,3 +252,4 @@ "Ссылка '%-.64s' не поддерживается (%s)", "Every derived table must have it's own alias" "Select %u был упразднен в процессе оптимизации", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/serbian/errmsg.txt b/sql/share/serbian/errmsg.txt index 6bcecf9e4c9..244f59d5e0a 100644 --- a/sql/share/serbian/errmsg.txt +++ b/sql/share/serbian/errmsg.txt @@ -245,3 +245,4 @@ "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/slovak/errmsg.txt b/sql/share/slovak/errmsg.txt index 55ead96545c..5da2b3b77f2 100644 --- a/sql/share/slovak/errmsg.txt +++ b/sql/share/slovak/errmsg.txt @@ -257,3 +257,4 @@ "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/spanish/errmsg.txt b/sql/share/spanish/errmsg.txt index 93a0abeed39..ea30c79d3c9 100644 --- a/sql/share/spanish/errmsg.txt +++ b/sql/share/spanish/errmsg.txt @@ -250,3 +250,4 @@ "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/swedish/errmsg.txt b/sql/share/swedish/errmsg.txt index a996898446e..4e65c7cab4f 100644 --- a/sql/share/swedish/errmsg.txt +++ b/sql/share/swedish/errmsg.txt @@ -249,3 +249,4 @@ "Reference '%-.64s' not supported (%s)", "Every derived table must have it's own alias" "Select %u was reduced during optimisation", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/share/ukrainian/errmsg.txt b/sql/share/ukrainian/errmsg.txt index 0ec1d88e601..ef0e9992ec4 100644 --- a/sql/share/ukrainian/errmsg.txt +++ b/sql/share/ukrainian/errmsg.txt @@ -254,3 +254,4 @@ "Посилання '%-.64s' не пiдтримуется (%s)", "Every derived table must have it's own alias" "Select %u was скасовано при оптимiзацii", +"Table '%-.64s' from one of SELECT's can not be used in %-.32s" diff --git a/sql/sql_base.cc b/sql/sql_base.cc index fc7629caae3..63affe5fde6 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -1957,8 +1957,14 @@ find_field_in_tables(THD *thd, Item_ident *item, TABLE_LIST *tables, table_name=buff; } if (report_error) - my_printf_error(ER_UNKNOWN_TABLE, ER(ER_UNKNOWN_TABLE), MYF(0), - table_name, thd->where); + { + if (thd->lex.current_select->get_master()->order_list.elements) + my_printf_error(ER_TABLENAME_NOT_ALLOWED_HERE, ER(ER_TABLENAME_NOT_ALLOWED_HERE), + MYF(0), table_name, thd->where); + else + my_printf_error(ER_UNKNOWN_TABLE, ER(ER_UNKNOWN_TABLE), MYF(0), + table_name, thd->where); + } else return (Field*) not_found_field; } |