mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
A fix (Bug #4980: union statement with () union () order by produces wrong explain).
This commit is contained in:
parent
b871ea386c
commit
8838c971fa
3 changed files with 21 additions and 1 deletions
|
@ -88,7 +88,6 @@ explain (select a,b from t1 limit 2) union all (select a,b from t2 order by a l
|
|||
table type possible_keys key key_len ref rows Extra
|
||||
t1 ALL NULL NULL NULL NULL 4
|
||||
t2 ALL NULL NULL NULL NULL 4 Using filesort
|
||||
t1 ALL NULL NULL NULL NULL 4
|
||||
(select sql_calc_found_rows a,b from t1 limit 2) union all (select a,b from t2 order by a) limit 2;
|
||||
a b
|
||||
1 a
|
||||
|
@ -424,8 +423,16 @@ create table t1 select a from t1 union select a from t2;
|
|||
INSERT TABLE 't1' isn't allowed in FROM table list
|
||||
select a from t1 union select a from t2 order by t2.a;
|
||||
Unknown column 't2.a' in 'ORDER BY'
|
||||
drop table t1;
|
||||
drop table t1,t2;
|
||||
select length(version()) > 1 as `*` UNION select 2;
|
||||
*
|
||||
1
|
||||
2
|
||||
create table t1 (a int);
|
||||
insert into t1 values (0), (3), (1), (2);
|
||||
explain (select * from t1) union (select * from t1) order by a;
|
||||
table type possible_keys key key_len ref rows Extra
|
||||
t1 ALL NULL NULL NULL NULL 4
|
||||
t1 ALL NULL NULL NULL NULL 4
|
||||
drop table t1;
|
||||
|
|
|
@ -228,6 +228,7 @@ create temporary table t1 select a from t1 union select a from t2;
|
|||
create table t1 select a from t1 union select a from t2;
|
||||
--error 1054
|
||||
select a from t1 union select a from t2 order by t2.a;
|
||||
drop table t1; # Drop temporary table
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
|
@ -236,3 +237,11 @@ drop table t1,t2;
|
|||
|
||||
select length(version()) > 1 as `*` UNION select 2;
|
||||
|
||||
#
|
||||
# Bug #4980: problem with explain
|
||||
#
|
||||
|
||||
create table t1 (a int);
|
||||
insert into t1 values (0), (3), (1), (2);
|
||||
explain (select * from t1) union (select * from t1) order by a;
|
||||
drop table t1;
|
||||
|
|
|
@ -148,6 +148,10 @@ int mysql_union(THD *thd, LEX *lex,select_result *result)
|
|||
{
|
||||
ha_rows records_at_start;
|
||||
lex->select=sl;
|
||||
#if MYSQL_VERSION_ID < 40100
|
||||
if (describe && sl->linkage == NOT_A_SELECT)
|
||||
break; // Skip extra item in case of 'explain'
|
||||
#endif
|
||||
/* Don't use offset for the last union if there is no braces */
|
||||
if (sl != lex_sl)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue