mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
MDEV-10036 sql_yacc.yy: Split select_part2 to disallow syntactically bad constructs with INTO, PROCEDURE, UNION
MDEV-10037 UNION with LIMIT ROWS EXAMINED does not require parentheses
This commit is contained in:
@ -173,10 +173,8 @@ Warning 1931 Query execution was interrupted. The query examined at least 8 rows
|
|||||||
select * from t1, t2 where c1 = c2 LIMIT ROWS EXAMINED 0
|
select * from t1, t2 where c1 = c2 LIMIT ROWS EXAMINED 0
|
||||||
UNION
|
UNION
|
||||||
select * from t1, t2 where c1 < c2 LIMIT ROWS EXAMINED 6;
|
select * from t1, t2 where c1 < c2 LIMIT ROWS EXAMINED 6;
|
||||||
c1 c2
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION
|
||||||
bb bb
|
select * from t1, t2 where c1 < c2 LIMIT ROWS EXAMINED 6' at line 2
|
||||||
Warnings:
|
|
||||||
Warning 1931 Query execution was interrupted. The query examined at least 8 rows, which exceeds LIMIT ROWS EXAMINED (6). The query result may be incomplete.
|
|
||||||
(select * from t1, t2 where c1 = c2 LIMIT ROWS EXAMINED 0)
|
(select * from t1, t2 where c1 = c2 LIMIT ROWS EXAMINED 0)
|
||||||
UNION
|
UNION
|
||||||
(select * from t1, t2 where c1 < c2 LIMIT ROWS EXAMINED 0)
|
(select * from t1, t2 where c1 < c2 LIMIT ROWS EXAMINED 0)
|
||||||
|
@ -709,7 +709,8 @@ ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
|||||||
SELECT 1 FROM DUAL PROCEDURE ANALYSE()
|
SELECT 1 FROM DUAL PROCEDURE ANALYSE()
|
||||||
UNION
|
UNION
|
||||||
SELECT 1 FROM t1;
|
SELECT 1 FROM t1;
|
||||||
ERROR HY000: Incorrect usage of UNION and SELECT ... PROCEDURE ANALYSE()
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION
|
||||||
|
SELECT 1 FROM t1' at line 2
|
||||||
(SELECT 1 FROM t1)
|
(SELECT 1 FROM t1)
|
||||||
UNION
|
UNION
|
||||||
(SELECT 1 FROM DUAL WHERE 1 GROUP BY 1 HAVING 1 ORDER BY 1
|
(SELECT 1 FROM DUAL WHERE 1 GROUP BY 1 HAVING 1 ORDER BY 1
|
||||||
@ -739,10 +740,10 @@ Warnings:
|
|||||||
Warning 1329 No data - zero rows fetched, selected, or processed
|
Warning 1329 No data - zero rows fetched, selected, or processed
|
||||||
SELECT 1 INTO @var17727401 FROM DUAL;
|
SELECT 1 INTO @var17727401 FROM DUAL;
|
||||||
SELECT 1 INTO @var17727401_1 FROM t1 INTO @var17727401_2;
|
SELECT 1 INTO @var17727401_1 FROM t1 INTO @var17727401_2;
|
||||||
ERROR HY000: Incorrect usage of INTO and INTO
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INTO @var17727401_2' at line 1
|
||||||
SELECT 1 INTO @var17727401_1 FROM DUAL
|
SELECT 1 INTO @var17727401_1 FROM DUAL
|
||||||
INTO @var17727401_2;
|
INTO @var17727401_2;
|
||||||
ERROR HY000: Incorrect usage of INTO and INTO
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INTO @var17727401_2' at line 2
|
||||||
SELECT 1 INTO @var17727401 FROM t1 WHERE 1 GROUP BY 1 HAVING 1 ORDER BY 1 LIMIT 1;
|
SELECT 1 INTO @var17727401 FROM t1 WHERE 1 GROUP BY 1 HAVING 1 ORDER BY 1 LIMIT 1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1329 No data - zero rows fetched, selected, or processed
|
Warning 1329 No data - zero rows fetched, selected, or processed
|
||||||
@ -754,7 +755,7 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp
|
|||||||
SELECT 1 INTO @var17727401_1
|
SELECT 1 INTO @var17727401_1
|
||||||
FROM t1 WHERE 1 GROUP BY 1 HAVING 1 ORDER BY 1 LIMIT 1
|
FROM t1 WHERE 1 GROUP BY 1 HAVING 1 ORDER BY 1 LIMIT 1
|
||||||
INTO @var17727401_2;
|
INTO @var17727401_2;
|
||||||
ERROR HY000: Incorrect usage of INTO and INTO
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INTO @var17727401_2' at line 3
|
||||||
SELECT (SELECT 1 FROM t1 INTO @var17727401);
|
SELECT (SELECT 1 FROM t1 INTO @var17727401);
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INTO @var17727401)' at line 1
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INTO @var17727401)' at line 1
|
||||||
SELECT 1 FROM (SELECT 1 FROM t1 INTO @var17727401) a;
|
SELECT 1 FROM (SELECT 1 FROM t1 INTO @var17727401) a;
|
||||||
@ -762,16 +763,16 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp
|
|||||||
SELECT EXISTS(SELECT 1 FROM t1 INTO @var17727401);
|
SELECT EXISTS(SELECT 1 FROM t1 INTO @var17727401);
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INTO @var17727401)' at line 1
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INTO @var17727401)' at line 1
|
||||||
SELECT 1 FROM t1 INTO @var17727401 UNION SELECT 1 FROM t1 INTO t1;
|
SELECT 1 FROM t1 INTO @var17727401 UNION SELECT 1 FROM t1 INTO t1;
|
||||||
ERROR HY000: Incorrect usage of UNION and INTO
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT 1 FROM t1 INTO t1' at line 1
|
||||||
(SELECT 1 FROM t1 INTO @var17727401) UNION (SELECT 1 FROM t1 INTO t1);
|
(SELECT 1 FROM t1 INTO @var17727401) UNION (SELECT 1 FROM t1 INTO t1);
|
||||||
ERROR HY000: Incorrect usage of UNION and INTO
|
ERROR HY000: Incorrect usage of UNION and INTO
|
||||||
SELECT 1 FROM t1 UNION SELECT 1 FROM t1 INTO @var17727401;
|
SELECT 1 FROM t1 UNION SELECT 1 FROM t1 INTO @var17727401;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1329 No data - zero rows fetched, selected, or processed
|
Warning 1329 No data - zero rows fetched, selected, or processed
|
||||||
SELECT 1 INTO @var17727401 FROM t1 PROCEDURE ANALYSE();
|
SELECT 1 INTO @var17727401 FROM t1 PROCEDURE ANALYSE();
|
||||||
ERROR HY000: Incorrect usage of PROCEDURE and INTO
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'PROCEDURE ANALYSE()' at line 1
|
||||||
SELECT 1 FROM t1 PROCEDURE ANALYSE() INTO @var17727401;
|
SELECT 1 FROM t1 PROCEDURE ANALYSE() INTO @var17727401;
|
||||||
ERROR HY000: Incorrect usage of PROCEDURE and INTO
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INTO @var17727401' at line 1
|
||||||
# ORDER and LIMIT clause combinations
|
# ORDER and LIMIT clause combinations
|
||||||
(SELECT 1 FROM t1 ORDER BY 1) ORDER BY 1;
|
(SELECT 1 FROM t1 ORDER BY 1) ORDER BY 1;
|
||||||
1
|
1
|
||||||
@ -817,19 +818,19 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp
|
|||||||
SELECT 1 FROM (SELECT 1 FROM t1 UNION SELECT 1 FROM t1 LIMIT 1 ORDER BY 1) a;
|
SELECT 1 FROM (SELECT 1 FROM t1 UNION SELECT 1 FROM t1 LIMIT 1 ORDER BY 1) a;
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ORDER BY 1) a' at line 1
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ORDER BY 1) a' at line 1
|
||||||
SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1;
|
SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1;
|
||||||
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT 1 FROM t1' at line 1
|
||||||
SELECT (SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1);
|
SELECT (SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1);
|
||||||
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
||||||
SELECT 1 FROM (SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1) a;
|
SELECT 1 FROM (SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1) a;
|
||||||
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
||||||
SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1;
|
SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1;
|
||||||
ERROR HY000: Incorrect usage of UNION and LIMIT
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT 1 FROM t1' at line 1
|
||||||
SELECT (SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1);
|
SELECT (SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1);
|
||||||
ERROR HY000: Incorrect usage of UNION and LIMIT
|
ERROR HY000: Incorrect usage of UNION and LIMIT
|
||||||
SELECT 1 FROM (SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1) a;
|
SELECT 1 FROM (SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1) a;
|
||||||
ERROR HY000: Incorrect usage of UNION and LIMIT
|
ERROR HY000: Incorrect usage of UNION and LIMIT
|
||||||
SELECT 1 FROM t1 ORDER BY 1 LIMIT 1 UNION SELECT 1 FROM t1;
|
SELECT 1 FROM t1 ORDER BY 1 LIMIT 1 UNION SELECT 1 FROM t1;
|
||||||
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT 1 FROM t1' at line 1
|
||||||
SELECT (SELECT 1 FROM t1 ORDER BY 1 LIMIT 1 UNION SELECT 1 FROM t1);
|
SELECT (SELECT 1 FROM t1 ORDER BY 1 LIMIT 1 UNION SELECT 1 FROM t1);
|
||||||
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
||||||
SELECT 1 FROM (SELECT 1 FROM t1 ORDER BY 1 LIMIT 1 UNION SELECT 1 FROM t1) a;
|
SELECT 1 FROM (SELECT 1 FROM t1 ORDER BY 1 LIMIT 1 UNION SELECT 1 FROM t1) a;
|
||||||
@ -841,25 +842,25 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp
|
|||||||
SELECT 1 FROM (SELECT 1 FROM t1 LIMIT 1 ORDER BY 1 UNION SELECT 1 FROM t1) a;
|
SELECT 1 FROM (SELECT 1 FROM t1 LIMIT 1 ORDER BY 1 UNION SELECT 1 FROM t1) a;
|
||||||
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
||||||
SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1 ORDER BY 1;
|
SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1 ORDER BY 1;
|
||||||
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT 1 FROM t1 ORDER BY 1' at line 1
|
||||||
SELECT (SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1 ORDER BY 1);
|
SELECT (SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1 ORDER BY 1);
|
||||||
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
||||||
SELECT 1 FROM (SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1 ORDER BY 1) a;
|
SELECT 1 FROM (SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1 ORDER BY 1) a;
|
||||||
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
||||||
SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1 LIMIT 1;
|
SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1 LIMIT 1;
|
||||||
ERROR HY000: Incorrect usage of UNION and LIMIT
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT 1 FROM t1 LIMIT 1' at line 1
|
||||||
SELECT (SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1 LIMIT 1);
|
SELECT (SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1 LIMIT 1);
|
||||||
ERROR HY000: Incorrect usage of UNION and LIMIT
|
ERROR HY000: Incorrect usage of UNION and LIMIT
|
||||||
SELECT 1 FROM (SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1 LIMIT 1) a;
|
SELECT 1 FROM (SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1 LIMIT 1) a;
|
||||||
ERROR HY000: Incorrect usage of UNION and LIMIT
|
ERROR HY000: Incorrect usage of UNION and LIMIT
|
||||||
SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1 ORDER BY 1;
|
SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1 ORDER BY 1;
|
||||||
ERROR HY000: Incorrect usage of UNION and LIMIT
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT 1 FROM t1 ORDER BY 1' at line 1
|
||||||
SELECT (SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1 ORDER BY 1);
|
SELECT (SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1 ORDER BY 1);
|
||||||
ERROR HY000: Incorrect usage of UNION and LIMIT
|
ERROR HY000: Incorrect usage of UNION and LIMIT
|
||||||
SELECT 1 FROM (SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1 ORDER BY 1) a;
|
SELECT 1 FROM (SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1 ORDER BY 1) a;
|
||||||
ERROR HY000: Incorrect usage of UNION and LIMIT
|
ERROR HY000: Incorrect usage of UNION and LIMIT
|
||||||
SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1 LIMIT 1;
|
SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1 LIMIT 1;
|
||||||
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT 1 FROM t1 LIMIT 1' at line 1
|
||||||
SELECT (SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1 LIMIT 1);
|
SELECT (SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1 LIMIT 1);
|
||||||
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
||||||
SELECT 1 FROM (SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1 LIMIT 1) a;
|
SELECT 1 FROM (SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1 LIMIT 1) a;
|
||||||
|
@ -124,9 +124,9 @@ ERROR 21000: The used SELECT statements have a different number of columns
|
|||||||
explain select a,b from t1 union select 1 limit 0;
|
explain select a,b from t1 union select 1 limit 0;
|
||||||
ERROR 21000: The used SELECT statements have a different number of columns
|
ERROR 21000: The used SELECT statements have a different number of columns
|
||||||
select a,b from t1 into outfile 'skr' union select a,b from t2;
|
select a,b from t1 into outfile 'skr' union select a,b from t2;
|
||||||
ERROR HY000: Incorrect usage of UNION and INTO
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'union select a,b from t2' at line 1
|
||||||
select a,b from t1 order by a union select a,b from t2;
|
select a,b from t1 order by a union select a,b from t2;
|
||||||
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'union select a,b from t2' at line 1
|
||||||
insert into t3 select a from t1 order by a union select a from t2;
|
insert into t3 select a from t1 order by a union select a from t2;
|
||||||
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
||||||
create table t3 select a,b from t1 union select a from t2;
|
create table t3 select a,b from t1 union select a from t2;
|
||||||
@ -380,7 +380,7 @@ select found_rows();
|
|||||||
found_rows()
|
found_rows()
|
||||||
4
|
4
|
||||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 1 UNION all SELECT * FROM t2 LIMIT 2;
|
SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 1 UNION all SELECT * FROM t2 LIMIT 2;
|
||||||
ERROR HY000: Incorrect usage of UNION and LIMIT
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION all SELECT * FROM t2 LIMIT 2' at line 1
|
||||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 UNION all SELECT * FROM t2 LIMIT 2;
|
SELECT SQL_CALC_FOUND_ROWS * FROM t1 UNION all SELECT * FROM t2 LIMIT 2;
|
||||||
a
|
a
|
||||||
1
|
1
|
||||||
@ -422,7 +422,7 @@ select found_rows();
|
|||||||
found_rows()
|
found_rows()
|
||||||
5
|
5
|
||||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 100 UNION SELECT * FROM t2;
|
SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 100 UNION SELECT * FROM t2;
|
||||||
ERROR HY000: Incorrect usage of UNION and LIMIT
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT * FROM t2' at line 1
|
||||||
SELECT COUNT(*) FROM (
|
SELECT COUNT(*) FROM (
|
||||||
(SELECT * FROM t1 LIMIT 100) UNION SELECT * FROM t2) q;
|
(SELECT * FROM t1 LIMIT 100) UNION SELECT * FROM t2) q;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
@ -435,7 +435,7 @@ a
|
|||||||
4
|
4
|
||||||
5
|
5
|
||||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 1 UNION SELECT * FROM t2;
|
SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 1 UNION SELECT * FROM t2;
|
||||||
ERROR HY000: Incorrect usage of UNION and LIMIT
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT * FROM t2' at line 1
|
||||||
SELECT COUNT(*) FROM (
|
SELECT COUNT(*) FROM (
|
||||||
(SELECT * FROM t1 LIMIT 1) UNION SELECT * FROM t2) q;
|
(SELECT * FROM t1 LIMIT 1) UNION SELECT * FROM t2) q;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
@ -447,7 +447,7 @@ a
|
|||||||
4
|
4
|
||||||
5
|
5
|
||||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 1 UNION SELECT * FROM t2 LIMIT 2;
|
SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 1 UNION SELECT * FROM t2 LIMIT 2;
|
||||||
ERROR HY000: Incorrect usage of UNION and LIMIT
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT * FROM t2 LIMIT 2' at line 1
|
||||||
SELECT COUNT(*) FROM (
|
SELECT COUNT(*) FROM (
|
||||||
(SELECT * FROM t1 LIMIT 1) UNION SELECT * FROM t2) q;
|
(SELECT * FROM t1 LIMIT 1) UNION SELECT * FROM t2) q;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
@ -468,7 +468,7 @@ SELECT * FROM t1 UNION SELECT * FROM t2) q;
|
|||||||
COUNT(*)
|
COUNT(*)
|
||||||
5
|
5
|
||||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 limit 2,2 UNION SELECT * FROM t2;
|
SELECT SQL_CALC_FOUND_ROWS * FROM t1 limit 2,2 UNION SELECT * FROM t2;
|
||||||
ERROR HY000: Incorrect usage of UNION and LIMIT
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT * FROM t2' at line 1
|
||||||
SELECT COUNT(*) FROM (
|
SELECT COUNT(*) FROM (
|
||||||
(SELECT * FROM t1 limit 2,2) UNION SELECT * FROM t2) q;
|
(SELECT * FROM t1 limit 2,2) UNION SELECT * FROM t2) q;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
@ -1569,7 +1569,8 @@ UNION ALL
|
|||||||
SELECT b, COUNT(*) FROM t2 GROUP BY b WITH ROLLUP ORDER BY a
|
SELECT b, COUNT(*) FROM t2 GROUP BY b WITH ROLLUP ORDER BY a
|
||||||
UNION
|
UNION
|
||||||
SELECT 1,1;
|
SELECT 1,1;
|
||||||
ERROR HY000: Incorrect usage of UNION and ORDER BY
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION
|
||||||
|
SELECT 1,1' at line 4
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
CREATE TABLE t1 (a INT);
|
CREATE TABLE t1 (a INT);
|
||||||
INSERT INTO t1 VALUES (1), (2), (3);
|
INSERT INTO t1 VALUES (1), (2), (3);
|
||||||
@ -1647,11 +1648,11 @@ SELECT a FROM t1 UNION SELECT a INTO @v FROM t1;
|
|||||||
SELECT a FROM t1 UNION SELECT a INTO OUTFILE 'union.out.file5' FROM t1;
|
SELECT a FROM t1 UNION SELECT a INTO OUTFILE 'union.out.file5' FROM t1;
|
||||||
SELECT a FROM t1 UNION SELECT a INTO OUTFILE 'union.out.file6' FROM t1;
|
SELECT a FROM t1 UNION SELECT a INTO OUTFILE 'union.out.file6' FROM t1;
|
||||||
SELECT a INTO @v FROM t1 UNION SELECT a FROM t1;
|
SELECT a INTO @v FROM t1 UNION SELECT a FROM t1;
|
||||||
ERROR HY000: Incorrect usage of UNION and INTO
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT a FROM t1' at line 1
|
||||||
SELECT a INTO OUTFILE 'union.out.file7' FROM t1 UNION SELECT a FROM t1;
|
SELECT a INTO OUTFILE 'union.out.file7' FROM t1 UNION SELECT a FROM t1;
|
||||||
ERROR HY000: Incorrect usage of UNION and INTO
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT a FROM t1' at line 1
|
||||||
SELECT a INTO DUMPFILE 'union.out.file8' FROM t1 UNION SELECT a FROM t1;
|
SELECT a INTO DUMPFILE 'union.out.file8' FROM t1 UNION SELECT a FROM t1;
|
||||||
ERROR HY000: Incorrect usage of UNION and INTO
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT a FROM t1' at line 1
|
||||||
# Tests fix in parser rule query_expression_body.
|
# Tests fix in parser rule query_expression_body.
|
||||||
SELECT ( SELECT a UNION SELECT a ) INTO @v FROM t1;
|
SELECT ( SELECT a UNION SELECT a ) INTO @v FROM t1;
|
||||||
SELECT ( SELECT a UNION SELECT a ) INTO OUTFILE 'union.out.file3' FROM t1;
|
SELECT ( SELECT a UNION SELECT a ) INTO OUTFILE 'union.out.file3' FROM t1;
|
||||||
|
@ -125,6 +125,7 @@ UNION
|
|||||||
UNION
|
UNION
|
||||||
(select * from t1, t2 where c1 < c2 LIMIT ROWS EXAMINED 6);
|
(select * from t1, t2 where c1 < c2 LIMIT ROWS EXAMINED 6);
|
||||||
|
|
||||||
|
--error ER_PARSE_ERROR
|
||||||
select * from t1, t2 where c1 = c2 LIMIT ROWS EXAMINED 0
|
select * from t1, t2 where c1 = c2 LIMIT ROWS EXAMINED 0
|
||||||
UNION
|
UNION
|
||||||
select * from t1, t2 where c1 < c2 LIMIT ROWS EXAMINED 6;
|
select * from t1, t2 where c1 < c2 LIMIT ROWS EXAMINED 6;
|
||||||
|
@ -831,7 +831,7 @@ UNION
|
|||||||
SELECT 1 FROM DUAL WHERE 1 GROUP BY 1 HAVING 1 ORDER BY 1
|
SELECT 1 FROM DUAL WHERE 1 GROUP BY 1 HAVING 1 ORDER BY 1
|
||||||
PROCEDURE ANALYSE() FOR UPDATE;
|
PROCEDURE ANALYSE() FOR UPDATE;
|
||||||
|
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
SELECT 1 FROM DUAL PROCEDURE ANALYSE()
|
SELECT 1 FROM DUAL PROCEDURE ANALYSE()
|
||||||
UNION
|
UNION
|
||||||
SELECT 1 FROM t1;
|
SELECT 1 FROM t1;
|
||||||
@ -863,10 +863,10 @@ SELECT 1 INTO @var17727401;
|
|||||||
SELECT 1 INTO @var17727401 FROM t1;
|
SELECT 1 INTO @var17727401 FROM t1;
|
||||||
SELECT 1 INTO @var17727401 FROM DUAL;
|
SELECT 1 INTO @var17727401 FROM DUAL;
|
||||||
|
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
SELECT 1 INTO @var17727401_1 FROM t1 INTO @var17727401_2;
|
SELECT 1 INTO @var17727401_1 FROM t1 INTO @var17727401_2;
|
||||||
|
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
SELECT 1 INTO @var17727401_1 FROM DUAL
|
SELECT 1 INTO @var17727401_1 FROM DUAL
|
||||||
INTO @var17727401_2;
|
INTO @var17727401_2;
|
||||||
|
|
||||||
@ -876,7 +876,7 @@ SELECT 1 FROM t1 WHERE 1 GROUP BY 1 HAVING 1 ORDER BY 1 LIMIT 1 INTO @var1772740
|
|||||||
--error ER_PARSE_ERROR
|
--error ER_PARSE_ERROR
|
||||||
SELECT 1 FROM t1 WHERE 1 INTO @var17727401 GROUP BY 1 HAVING 1 ORDER BY 1 LIMIT 1;
|
SELECT 1 FROM t1 WHERE 1 INTO @var17727401 GROUP BY 1 HAVING 1 ORDER BY 1 LIMIT 1;
|
||||||
|
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
SELECT 1 INTO @var17727401_1
|
SELECT 1 INTO @var17727401_1
|
||||||
FROM t1 WHERE 1 GROUP BY 1 HAVING 1 ORDER BY 1 LIMIT 1
|
FROM t1 WHERE 1 GROUP BY 1 HAVING 1 ORDER BY 1 LIMIT 1
|
||||||
INTO @var17727401_2;
|
INTO @var17727401_2;
|
||||||
@ -888,17 +888,17 @@ SELECT 1 FROM (SELECT 1 FROM t1 INTO @var17727401) a;
|
|||||||
--error ER_PARSE_ERROR
|
--error ER_PARSE_ERROR
|
||||||
SELECT EXISTS(SELECT 1 FROM t1 INTO @var17727401);
|
SELECT EXISTS(SELECT 1 FROM t1 INTO @var17727401);
|
||||||
|
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
SELECT 1 FROM t1 INTO @var17727401 UNION SELECT 1 FROM t1 INTO t1;
|
SELECT 1 FROM t1 INTO @var17727401 UNION SELECT 1 FROM t1 INTO t1;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_WRONG_USAGE
|
||||||
(SELECT 1 FROM t1 INTO @var17727401) UNION (SELECT 1 FROM t1 INTO t1);
|
(SELECT 1 FROM t1 INTO @var17727401) UNION (SELECT 1 FROM t1 INTO t1);
|
||||||
|
|
||||||
SELECT 1 FROM t1 UNION SELECT 1 FROM t1 INTO @var17727401;
|
SELECT 1 FROM t1 UNION SELECT 1 FROM t1 INTO @var17727401;
|
||||||
|
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
SELECT 1 INTO @var17727401 FROM t1 PROCEDURE ANALYSE();
|
SELECT 1 INTO @var17727401 FROM t1 PROCEDURE ANALYSE();
|
||||||
|
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
SELECT 1 FROM t1 PROCEDURE ANALYSE() INTO @var17727401;
|
SELECT 1 FROM t1 PROCEDURE ANALYSE() INTO @var17727401;
|
||||||
|
|
||||||
--echo # ORDER and LIMIT clause combinations
|
--echo # ORDER and LIMIT clause combinations
|
||||||
@ -947,7 +947,7 @@ eval SELECT ($q);
|
|||||||
eval SELECT 1 FROM ($q) a;
|
eval SELECT 1 FROM ($q) a;
|
||||||
|
|
||||||
let $q=SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1;
|
let $q=SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
eval $q;
|
eval $q;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_WRONG_USAGE
|
||||||
eval SELECT ($q);
|
eval SELECT ($q);
|
||||||
@ -955,7 +955,7 @@ eval SELECT ($q);
|
|||||||
eval SELECT 1 FROM ($q) a;
|
eval SELECT 1 FROM ($q) a;
|
||||||
|
|
||||||
let $q=SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1;
|
let $q=SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
eval $q;
|
eval $q;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_WRONG_USAGE
|
||||||
eval SELECT ($q);
|
eval SELECT ($q);
|
||||||
@ -963,7 +963,7 @@ eval SELECT ($q);
|
|||||||
eval SELECT 1 FROM ($q) a;
|
eval SELECT 1 FROM ($q) a;
|
||||||
|
|
||||||
let $q=SELECT 1 FROM t1 ORDER BY 1 LIMIT 1 UNION SELECT 1 FROM t1;
|
let $q=SELECT 1 FROM t1 ORDER BY 1 LIMIT 1 UNION SELECT 1 FROM t1;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
eval $q;
|
eval $q;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_WRONG_USAGE
|
||||||
eval SELECT ($q);
|
eval SELECT ($q);
|
||||||
@ -979,7 +979,7 @@ eval SELECT ($q);
|
|||||||
eval SELECT 1 FROM ($q) a;
|
eval SELECT 1 FROM ($q) a;
|
||||||
|
|
||||||
let $q=SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1 ORDER BY 1;
|
let $q=SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1 ORDER BY 1;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
eval $q;
|
eval $q;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_WRONG_USAGE
|
||||||
eval SELECT ($q);
|
eval SELECT ($q);
|
||||||
@ -987,7 +987,7 @@ eval SELECT ($q);
|
|||||||
eval SELECT 1 FROM ($q) a;
|
eval SELECT 1 FROM ($q) a;
|
||||||
|
|
||||||
let $q=SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1 LIMIT 1;
|
let $q=SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1 LIMIT 1;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
eval $q;
|
eval $q;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_WRONG_USAGE
|
||||||
eval SELECT ($q);
|
eval SELECT ($q);
|
||||||
@ -995,7 +995,7 @@ eval SELECT ($q);
|
|||||||
eval SELECT 1 FROM ($q) a;
|
eval SELECT 1 FROM ($q) a;
|
||||||
|
|
||||||
let $q=SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1 ORDER BY 1;
|
let $q=SELECT 1 FROM t1 LIMIT 1 UNION SELECT 1 FROM t1 ORDER BY 1;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
eval $q;
|
eval $q;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_WRONG_USAGE
|
||||||
eval SELECT ($q);
|
eval SELECT ($q);
|
||||||
@ -1003,7 +1003,7 @@ eval SELECT ($q);
|
|||||||
eval SELECT 1 FROM ($q) a;
|
eval SELECT 1 FROM ($q) a;
|
||||||
|
|
||||||
let $q=SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1 LIMIT 1;
|
let $q=SELECT 1 FROM t1 ORDER BY 1 UNION SELECT 1 FROM t1 LIMIT 1;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
eval $q;
|
eval $q;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_WRONG_USAGE
|
||||||
eval SELECT ($q);
|
eval SELECT ($q);
|
||||||
|
@ -50,10 +50,10 @@ explain select 1 union select a,b from t1 union select 1;
|
|||||||
--error 1222
|
--error 1222
|
||||||
explain select a,b from t1 union select 1 limit 0;
|
explain select a,b from t1 union select 1 limit 0;
|
||||||
|
|
||||||
--error 1221
|
--error ER_PARSE_ERROR
|
||||||
select a,b from t1 into outfile 'skr' union select a,b from t2;
|
select a,b from t1 into outfile 'skr' union select a,b from t2;
|
||||||
|
|
||||||
--error 1221
|
--error ER_PARSE_ERROR
|
||||||
select a,b from t1 order by a union select a,b from t2;
|
select a,b from t1 order by a union select a,b from t2;
|
||||||
|
|
||||||
--error 1221
|
--error 1221
|
||||||
@ -236,7 +236,7 @@ SELECT COUNT(*) FROM (
|
|||||||
select found_rows();
|
select found_rows();
|
||||||
|
|
||||||
# In these case found_rows() should work
|
# In these case found_rows() should work
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 1 UNION all SELECT * FROM t2 LIMIT 2;
|
SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 1 UNION all SELECT * FROM t2 LIMIT 2;
|
||||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 UNION all SELECT * FROM t2 LIMIT 2;
|
SELECT SQL_CALC_FOUND_ROWS * FROM t1 UNION all SELECT * FROM t2 LIMIT 2;
|
||||||
select found_rows();
|
select found_rows();
|
||||||
@ -253,17 +253,17 @@ SELECT COUNT(*) FROM (
|
|||||||
SELECT * FROM t1 UNION all SELECT * FROM t2) q;
|
SELECT * FROM t1 UNION all SELECT * FROM t2) q;
|
||||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 UNION SELECT * FROM t2 LIMIT 100;
|
SELECT SQL_CALC_FOUND_ROWS * FROM t1 UNION SELECT * FROM t2 LIMIT 100;
|
||||||
select found_rows();
|
select found_rows();
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 100 UNION SELECT * FROM t2;
|
SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 100 UNION SELECT * FROM t2;
|
||||||
SELECT COUNT(*) FROM (
|
SELECT COUNT(*) FROM (
|
||||||
(SELECT * FROM t1 LIMIT 100) UNION SELECT * FROM t2) q;
|
(SELECT * FROM t1 LIMIT 100) UNION SELECT * FROM t2) q;
|
||||||
(SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 100) UNION SELECT * FROM t2;
|
(SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 100) UNION SELECT * FROM t2;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 1 UNION SELECT * FROM t2;
|
SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 1 UNION SELECT * FROM t2;
|
||||||
SELECT COUNT(*) FROM (
|
SELECT COUNT(*) FROM (
|
||||||
(SELECT * FROM t1 LIMIT 1) UNION SELECT * FROM t2) q;
|
(SELECT * FROM t1 LIMIT 1) UNION SELECT * FROM t2) q;
|
||||||
(SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 1) UNION SELECT * FROM t2;
|
(SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 1) UNION SELECT * FROM t2;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 1 UNION SELECT * FROM t2 LIMIT 2;
|
SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 1 UNION SELECT * FROM t2 LIMIT 2;
|
||||||
SELECT COUNT(*) FROM (
|
SELECT COUNT(*) FROM (
|
||||||
(SELECT * FROM t1 LIMIT 1) UNION SELECT * FROM t2) q;
|
(SELECT * FROM t1 LIMIT 1) UNION SELECT * FROM t2) q;
|
||||||
@ -272,7 +272,7 @@ SELECT SQL_CALC_FOUND_ROWS * FROM t1 UNION SELECT * FROM t2 LIMIT 2,2;
|
|||||||
select found_rows();
|
select found_rows();
|
||||||
SELECT COUNT(*) FROM (
|
SELECT COUNT(*) FROM (
|
||||||
SELECT * FROM t1 UNION SELECT * FROM t2) q;
|
SELECT * FROM t1 UNION SELECT * FROM t2) q;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 limit 2,2 UNION SELECT * FROM t2;
|
SELECT SQL_CALC_FOUND_ROWS * FROM t1 limit 2,2 UNION SELECT * FROM t2;
|
||||||
SELECT COUNT(*) FROM (
|
SELECT COUNT(*) FROM (
|
||||||
(SELECT * FROM t1 limit 2,2) UNION SELECT * FROM t2) q;
|
(SELECT * FROM t1 limit 2,2) UNION SELECT * FROM t2) q;
|
||||||
@ -999,7 +999,7 @@ SELECT a,1 FROM t1
|
|||||||
UNION
|
UNION
|
||||||
(SELECT b, COUNT(*) FROM t2 GROUP BY b WITH ROLLUP ORDER BY a);
|
(SELECT b, COUNT(*) FROM t2 GROUP BY b WITH ROLLUP ORDER BY a);
|
||||||
|
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
SELECT a,1 FROM t1
|
SELECT a,1 FROM t1
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT b, COUNT(*) FROM t2 GROUP BY b WITH ROLLUP ORDER BY a
|
SELECT b, COUNT(*) FROM t2 GROUP BY b WITH ROLLUP ORDER BY a
|
||||||
@ -1087,11 +1087,11 @@ SELECT a INTO DUMPFILE 'union.out.file2' FROM (
|
|||||||
SELECT a FROM t1 UNION SELECT a INTO @v FROM t1;
|
SELECT a FROM t1 UNION SELECT a INTO @v FROM t1;
|
||||||
SELECT a FROM t1 UNION SELECT a INTO OUTFILE 'union.out.file5' FROM t1;
|
SELECT a FROM t1 UNION SELECT a INTO OUTFILE 'union.out.file5' FROM t1;
|
||||||
SELECT a FROM t1 UNION SELECT a INTO OUTFILE 'union.out.file6' FROM t1;
|
SELECT a FROM t1 UNION SELECT a INTO OUTFILE 'union.out.file6' FROM t1;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
SELECT a INTO @v FROM t1 UNION SELECT a FROM t1;
|
SELECT a INTO @v FROM t1 UNION SELECT a FROM t1;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
SELECT a INTO OUTFILE 'union.out.file7' FROM t1 UNION SELECT a FROM t1;
|
SELECT a INTO OUTFILE 'union.out.file7' FROM t1 UNION SELECT a FROM t1;
|
||||||
--error ER_WRONG_USAGE
|
--error ER_PARSE_ERROR
|
||||||
SELECT a INTO DUMPFILE 'union.out.file8' FROM t1 UNION SELECT a FROM t1;
|
SELECT a INTO DUMPFILE 'union.out.file8' FROM t1 UNION SELECT a FROM t1;
|
||||||
|
|
||||||
-- echo # Tests fix in parser rule query_expression_body.
|
-- echo # Tests fix in parser rule query_expression_body.
|
||||||
|
@ -1793,7 +1793,6 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
|
|||||||
opt_default_time_precision
|
opt_default_time_precision
|
||||||
case_stmt_body opt_bin_mod
|
case_stmt_body opt_bin_mod
|
||||||
opt_if_exists_table_element opt_if_not_exists_table_element
|
opt_if_exists_table_element opt_if_not_exists_table_element
|
||||||
opt_into opt_procedure_clause
|
|
||||||
opt_recursive
|
opt_recursive
|
||||||
|
|
||||||
%type <object_ddl_options>
|
%type <object_ddl_options>
|
||||||
@ -8533,7 +8532,8 @@ select_paren:
|
|||||||
*/
|
*/
|
||||||
Lex->current_select->set_braces(true);
|
Lex->current_select->set_braces(true);
|
||||||
}
|
}
|
||||||
SELECT_SYM select_part2
|
SELECT_SYM select_options_and_item_list select_part3
|
||||||
|
opt_select_lock_type
|
||||||
{
|
{
|
||||||
if (setup_select_in_parentheses(Lex))
|
if (setup_select_in_parentheses(Lex))
|
||||||
MYSQL_YYABORT;
|
MYSQL_YYABORT;
|
||||||
@ -8559,48 +8559,40 @@ select_paren_derived:
|
|||||||
;
|
;
|
||||||
|
|
||||||
select_init2:
|
select_init2:
|
||||||
select_part2
|
select_options_and_item_list
|
||||||
|
opt_table_expression
|
||||||
|
opt_select_lock_type
|
||||||
{
|
{
|
||||||
LEX *lex= Lex;
|
|
||||||
/* Parentheses carry no meaning here */
|
/* Parentheses carry no meaning here */
|
||||||
lex->current_select->set_braces(false);
|
Lex->current_select->set_braces(false);
|
||||||
}
|
}
|
||||||
union_clause
|
union_clause
|
||||||
|
| select_options_and_item_list
|
||||||
|
select_part3_union_not_ready
|
||||||
|
opt_select_lock_type
|
||||||
|
{
|
||||||
|
/* Parentheses carry no meaning here */
|
||||||
|
Lex->current_select->set_braces(false);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
select_part3:
|
||||||
|
opt_table_expression
|
||||||
|
| select_part3_union_not_ready
|
||||||
;
|
;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Theoretically we can merge all 3 right hand sides of the select_part2
|
The SELECT parts after select_item_list that cannot be followed by UNION.
|
||||||
rule into one, however such a transformation adds one shift/reduce
|
|
||||||
conflict more.
|
|
||||||
*/
|
*/
|
||||||
select_part2:
|
select_part3_union_not_ready:
|
||||||
select_options_and_item_list
|
order_or_limit
|
||||||
opt_order_clause
|
| into opt_table_expression opt_order_clause opt_limit_clause
|
||||||
opt_limit_clause
|
| table_expression into
|
||||||
opt_select_lock_type
|
| table_expression procedure_clause
|
||||||
| select_options_and_item_list into opt_select_lock_type
|
| table_expression order_or_limit
|
||||||
| select_options_and_item_list
|
| table_expression order_or_limit into
|
||||||
opt_into
|
| table_expression order_or_limit procedure_clause
|
||||||
table_expression
|
|
||||||
opt_order_clause
|
|
||||||
opt_limit_clause
|
|
||||||
opt_procedure_clause
|
|
||||||
opt_into
|
|
||||||
opt_select_lock_type
|
|
||||||
{
|
|
||||||
if ($2 && $7)
|
|
||||||
{
|
|
||||||
/* double "INTO" clause */
|
|
||||||
my_error(ER_WRONG_USAGE, MYF(0), "INTO", "INTO");
|
|
||||||
MYSQL_YYABORT;
|
|
||||||
}
|
|
||||||
if ($6 && ($2 || $7))
|
|
||||||
{
|
|
||||||
/* "INTO" with "PROCEDURE ANALYSE" */
|
|
||||||
my_error(ER_WRONG_USAGE, MYF(0), "PROCEDURE", "INTO");
|
|
||||||
MYSQL_YYABORT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
;
|
;
|
||||||
|
|
||||||
select_options_and_item_list:
|
select_options_and_item_list:
|
||||||
@ -11946,9 +11938,8 @@ choice:
|
|||||||
| DEFAULT { $$= HA_CHOICE_UNDEF; }
|
| DEFAULT { $$= HA_CHOICE_UNDEF; }
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_procedure_clause:
|
procedure_clause:
|
||||||
/* empty */ { $$= false; }
|
PROCEDURE_SYM ident /* Procedure name */
|
||||||
| PROCEDURE_SYM ident /* Procedure name */
|
|
||||||
{
|
{
|
||||||
LEX *lex=Lex;
|
LEX *lex=Lex;
|
||||||
|
|
||||||
@ -11989,7 +11980,6 @@ opt_procedure_clause:
|
|||||||
{
|
{
|
||||||
/* Subqueries are allowed from now.*/
|
/* Subqueries are allowed from now.*/
|
||||||
Lex->expr_allows_subselect= true;
|
Lex->expr_allows_subselect= true;
|
||||||
$$= true;
|
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -12069,11 +12059,6 @@ select_outvar:
|
|||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_into:
|
|
||||||
/* empty */ { $$= false; }
|
|
||||||
| into { $$= true; }
|
|
||||||
;
|
|
||||||
|
|
||||||
into:
|
into:
|
||||||
INTO
|
INTO
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user