mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
A bug fix for ORDER BY on table.column in provisional entire UNION
ORDER clause, where table is one of union'ed tables.
This commit is contained in:
parent
0b36bbdf25
commit
bbbae0dbf7
3 changed files with 11 additions and 2 deletions
|
@ -84,6 +84,11 @@ a b
|
|||
3 c
|
||||
2 b
|
||||
1 a
|
||||
(select a,b from t1 limit 2) union all (select a,b from t2 order by a limit 1) order by t1.b;
|
||||
a b
|
||||
1 a
|
||||
2 b
|
||||
3 c
|
||||
explain (select a,b from t1 limit 2) union all (select a,b from t2 order by a limit 1) order by b desc;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4
|
||||
|
|
|
@ -20,6 +20,7 @@ select 't1',b,count(*) from t1 group by b UNION select 't2',b,count(*) from t2 g
|
|||
(select a,b from t1 limit 2) union all (select a,b from t2 order by a) limit 4;
|
||||
(select a,b from t1 limit 2) union all (select a,b from t2 order by a limit 1);
|
||||
(select a,b from t1 limit 2) union all (select a,b from t2 order by a limit 1) order by b desc;
|
||||
(select a,b from t1 limit 2) union all (select a,b from t2 order by a limit 1) order by t1.b;
|
||||
explain (select a,b from t1 limit 2) union all (select a,b from t2 order by a limit 1) order by b desc;
|
||||
#(select sql_calc_found_rows a,b from t1 limit 2) union all (select a,b from t2 order by a) limit 2;
|
||||
select found_rows();
|
||||
|
|
|
@ -535,9 +535,12 @@ 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
|
||||
if (thd->lex.current_select->linkage != DERIVED_TABLE_TYPE)
|
||||
for (SELECT_LEX *sl= thd->lex.current_select->outer_select();
|
||||
if (cursel->linkage != DERIVED_TABLE_TYPE)
|
||||
for (SELECT_LEX *sl= (cursel->get_master()->linkage == GLOBAL_OPTIONS_TYPE &&
|
||||
cursel->get_master()->order_list.elements) ? cursel->select_lex()
|
||||
: cursel->outer_select();
|
||||
sl;
|
||||
sl= sl->outer_select())
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue