DBZ-6316 Add support for Table Value Constructors

Refs https://github.com/antlr/grammars-v4/pull/3076
Refs https://github.com/antlr/grammars-v4/pull/3077
This commit is contained in:
Jochen Schalanda 2023-04-05 15:51:08 +02:00 committed by Jiri Pechanec
parent 054cfb99b8
commit 30102b9fa4
2 changed files with 20 additions and 2 deletions

View File

@ -74,7 +74,7 @@ dmlStatement
: selectStatement | insertStatement | updateStatement
| deleteStatement | replaceStatement | callStatement
| loadDataStatement | loadXmlStatement | doStatement
| handlerStatement
| handlerStatement | valuesStatement
;
transactionStatement
@ -953,6 +953,13 @@ selectStatement
| querySpecificationNointo (',' lateralStatement)+ #withLateralStatement
;
// https://dev.mysql.com/doc/refman/8.0/en/values.html
valuesStatement
: VALUES
'(' expressionsWithDefaults? ')'
(',' '(' expressionsWithDefaults? ')')*
;
updateStatement
: singleUpdateStatement | multipleUpdateStatement
;

View File

@ -334,7 +334,7 @@ create or replace trigger trg_my1 before delete on test.t1 for each row begin in
create or replace view my_view1 as select 1 union select 2 limit 0,5;
create algorithm = merge view my_view2(col1, col2) as select * from t2 with check option;
create or replace definer = 'ivan'@'%' view my_view3 as select count(*) from t3;
create or replace definer = current_user sql security invoker view my_view4(c1, 1c, _, c1_2)
create or replace definer = current_user sql security invoker view my_view4(c1, 1c, _, c1_2)
as select * from (t1 as tt1, t2 as tt2) inner join t1 on t1.col1 = tt1.col1;
create view v_some_table as (with a as (select * from some_table) select * from a);
@ -644,3 +644,14 @@ CREATE SEQUENCE `seq_8b4d1cdf-377e-4021-aef3-f7c9846903fc` INCREMENT BY 1 START
-- src: https://mariadb.com/kb/en/set-statement/
SET STATEMENT max_statement_time=60 FOR CREATE TABLE some_table (val int);
#end
#begin
-- Table Value Constructors
-- https://dev.mysql.com/doc/refman/8.0/en/values.html
CREATE OR REPLACE VIEW view_name AS
WITH my_values(val1, val2) AS (
VALUES (1, 'One'),
(2, 'Two')
)
SELECT v.val1, v.val2 FROM my_values v;
#end