mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-16357 LIMIT and ORDER BY clause is ignored on a query with UNION
when using brackets Do not create master unit for select if it has already one.
This commit is contained in:
@ -219,4 +219,28 @@ select 1 union select 1 union select 1;
|
|||||||
((select 1) union (select 1) union (select 1));
|
((select 1) union (select 1) union (select 1));
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
|
#
|
||||||
|
# MDEV-16357: union in brackets with tail
|
||||||
|
# union with tail in brackets
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a int);
|
||||||
|
INSERT INTO t1 VALUES(1),(2),(3),(4);
|
||||||
|
CREATE TABLE t2 (a int);
|
||||||
|
INSERT INTO t2 VALUES (4),(5),(6),(7);
|
||||||
|
(SELECT a FROM t1 UNION SELECT a FROM t2) LIMIT 1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
(SELECT a FROM t1 UNION SELECT a FROM t2) ORDER BY a DESC;
|
||||||
|
a
|
||||||
|
7
|
||||||
|
6
|
||||||
|
5
|
||||||
|
4
|
||||||
|
3
|
||||||
|
2
|
||||||
|
1
|
||||||
|
(SELECT a FROM t1 UNION SELECT a FROM t2 LIMIT 1);
|
||||||
|
a
|
||||||
|
1
|
||||||
|
DROP TABLE t1,t2;
|
||||||
# End of 10.4 tests
|
# End of 10.4 tests
|
||||||
|
@ -88,5 +88,23 @@ select 1 union select 1 union select 1;
|
|||||||
(select 1 union select 1 union select 1);
|
(select 1 union select 1 union select 1);
|
||||||
((select 1) union (select 1) union (select 1));
|
((select 1) union (select 1) union (select 1));
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-16357: union in brackets with tail
|
||||||
|
--echo # union with tail in brackets
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a int);
|
||||||
|
INSERT INTO t1 VALUES(1),(2),(3),(4);
|
||||||
|
|
||||||
|
CREATE TABLE t2 (a int);
|
||||||
|
INSERT INTO t2 VALUES (4),(5),(6),(7);
|
||||||
|
|
||||||
|
(SELECT a FROM t1 UNION SELECT a FROM t2) LIMIT 1;
|
||||||
|
(SELECT a FROM t1 UNION SELECT a FROM t2) ORDER BY a DESC;
|
||||||
|
|
||||||
|
(SELECT a FROM t1 UNION SELECT a FROM t2 LIMIT 1);
|
||||||
|
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
--echo # End of 10.4 tests
|
--echo # End of 10.4 tests
|
||||||
|
|
||||||
|
@ -5250,6 +5250,9 @@ LEX::create_unit(SELECT_LEX *first_sel)
|
|||||||
SELECT_LEX_UNIT *unit;
|
SELECT_LEX_UNIT *unit;
|
||||||
DBUG_ENTER("LEX::create_unit");
|
DBUG_ENTER("LEX::create_unit");
|
||||||
|
|
||||||
|
if (first_sel->master_unit())
|
||||||
|
DBUG_RETURN(first_sel->master_unit());
|
||||||
|
|
||||||
if (!(unit= alloc_unit()))
|
if (!(unit= alloc_unit()))
|
||||||
DBUG_RETURN(NULL);
|
DBUG_RETURN(NULL);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user