mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Fix for BUG#8023.
Allow LIMIT clause after DUAL. mysql-test/r/limit.result: Added test result for BUG#8023. mysql-test/t/limit.test: Added test for BUG#8023. sql/sql_yacc.yy: Allow the specification of a LIMIT clause after DUAL. This is needed for queries as: select a from t1 union all select 1 from dual limit 1; In this query LIMIT is applied to the whole UNION, so it makes sense, however, the current parser did not allow any clause after DUAL.
This commit is contained in:
@ -67,3 +67,12 @@ SELECT * FROM t1;
|
||||
id id2
|
||||
3 0
|
||||
DROP TABLE t1;
|
||||
create table t1 (a integer);
|
||||
insert into t1 values (1);
|
||||
select 1 as a from t1 union all select 1 from dual limit 1;
|
||||
a
|
||||
1
|
||||
(select 1 as a from t1) union all (select 1 from dual) limit 1;
|
||||
a
|
||||
1
|
||||
drop table t1;
|
||||
|
@ -49,3 +49,13 @@ SELECT * FROM t1;
|
||||
DELETE FROM t1 WHERE id2 = 0 ORDER BY id desc LIMIT 1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#8023 - limit on UNION with from DUAL, causes syntax error
|
||||
#
|
||||
create table t1 (a integer);
|
||||
insert into t1 values (1);
|
||||
# both queries must return one row
|
||||
select 1 as a from t1 union all select 1 from dual limit 1;
|
||||
(select 1 as a from t1) union all (select 1 from dual) limit 1;
|
||||
drop table t1;
|
||||
|
@ -2455,10 +2455,11 @@ select_into:
|
||||
select_from:
|
||||
FROM join_table_list where_clause group_clause having_clause
|
||||
opt_order_clause opt_limit_clause procedure_clause
|
||||
| FROM DUAL_SYM /* oracle compatibility: oracle always requires FROM
|
||||
clause, and DUAL is system table without fields.
|
||||
Is "SELECT 1 FROM DUAL" any better than
|
||||
"SELECT 1" ? Hmmm :) */
|
||||
| FROM DUAL_SYM opt_limit_clause
|
||||
/* oracle compatibility: oracle always requires FROM clause,
|
||||
and DUAL is system table without fields.
|
||||
Is "SELECT 1 FROM DUAL" any better than "SELECT 1" ?
|
||||
Hmmm :) */
|
||||
;
|
||||
|
||||
select_options:
|
||||
|
Reference in New Issue
Block a user