Skip to content

Commit 95a1087

Browse files
committed
feat: sync some useful syntax from antlr/grammars-v4
1 parent 24b392d commit 95a1087

File tree

5 files changed

+17
-14
lines changed

5 files changed

+17
-14
lines changed

src/grammar/mysql/MySqlParser.g4

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ createTablespaceNdb
310310
;
311311

312312
createTrigger
313-
: KW_CREATE ownerStatement? KW_TRIGGER ifNotExists? trigger_name=fullId triggerTime=(
313+
: KW_CREATE ownerStatement? ifNotExists? KW_TRIGGER ifNotExists? trigger_name=fullId triggerTime=(
314314
KW_BEFORE
315315
| KW_AFTER
316316
) triggerEvent=(KW_INSERT | KW_UPDATE | KW_DELETE) KW_ON tableName KW_FOR KW_EACH KW_ROW (
@@ -907,19 +907,6 @@ replaceStatement
907907
)? (('(' columnNames ')')? replaceStatementValuesOrSelectOrTable | setAssignmentList)
908908
;
909909

910-
// selectStatement
911-
// : querySpecification lockClause? # simpleSelect
912-
// | querySpecificationNointo lockClause? intoClause? # simpleSelect
913-
// | queryExpression lockClause? # parenthesisSelect
914-
// | querySpecificationNointo unionStatement+ (
915-
// KW_UNION unionType=(KW_ALL | KW_DISTINCT)? (querySpecification | queryExpression)
916-
// )? orderByClause? limitClause? lockClause? # unionSelect
917-
// | queryExpressionNointo unionParenthesis+ (
918-
// KW_UNION unionType=(KW_ALL | KW_DISTINCT)? queryExpression
919-
// )? orderByClause? limitClause? lockClause? # unionParenthesisSelect
920-
// | querySpecificationNointo (',' lateralStatement)+ # withLateralStatement
921-
// ;
922-
923910
// TODO: Simplify the rules to fit SLL(*) Mode
924911
selectStatement
925912
: querySpecification unionStatement* (
@@ -1127,6 +1114,7 @@ queryExpression
11271114
*/
11281115
querySpecification
11291116
: KW_SELECT selectSpec* selectElements intoClause? fromClause groupByClause? havingClause? windowClause? orderByClause? limitClause? intoClause?
1117+
unionStatement?
11301118
;
11311119

11321120
unionStatement
@@ -3421,6 +3409,7 @@ keywordsCanBeId
34213409
| KW_RESOURCE_GROUP_USER
34223410
| KW_RESUME
34233411
| KW_RETURNED_SQLSTATE
3412+
| KW_RETURNING
34243413
| KW_RETURNS
34253414
| KW_REUSE
34263415
| KW_ROLE

test/parser/mysql/suggestion/tokenSuggestion.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ describe('MySQL Token Suggestion', () => {
6060
'ALGORITHM',
6161
'OR',
6262
'TRIGGER',
63+
'IF',
6364
'TABLESPACE',
6465
'UNDO',
6566
'TABLE',

test/parser/mysql/syntax/fixtures/alterTable.sql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,3 +102,6 @@ ALTER TABLE t1 ALTER COLUMN c1 DROP DEFAULT, DROP CONSTRAINT c2_positive, ALTER
102102
ALTER TABLE t1 ALTER COLUMN c1 DROP DEFAULT, DROP CONSTRAINT c2_positive, ALTER CHECK c2_positive NOT ENFORCED REBUILD PARTITION p0 REBUILD PARTITION ALL;
103103
ALTER TABLE t1 ALTER COLUMN c1 DROP DEFAULT, DROP CONSTRAINT c2_positive, ALTER CHECK c2_positive NOT ENFORCED REPAIR PARTITION p0 REPAIR PARTITION ALL;
104104
ALTER TABLE t1 ALTER COLUMN c1 SET VISIBLE, DROP CONSTRAINT c2_positive, ALTER CHECK c2_positive NOT ENFORCED REMOVE PARTITIONING UPGRADE PARTITIONING;
105+
106+
107+
ALTER TABLE `order` ADD cancelled TINYINT(1) DEFAULT 0 NOT NULL, ADD delivered TINYINT(1) DEFAULT 0 NOT NULL, ADD returning TINYINT(1) DEFAULT 0 NOT NULL;

test/parser/mysql/syntax/fixtures/createTrigger.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,5 @@ CREATE TRIGGER my_trigger AFTER DELETE ON your_table FOR EACH ROW SET NEW.column
2020

2121
CREATE TRIGGER my_trigger AFTER INSERT ON your_table FOR EACH ROW FOLLOWS other_trigger_name SET NEW.column_name = some_value;
2222
CREATE TRIGGER my_trigger AFTER INSERT ON your_table FOR EACH ROW PRECEDES other_trigger_name SET NEW.column_name = some_value;
23+
24+
CREATE TRIGGER IF NOT EXISTS my_trigger AFTER INSERT ON your_table FOR EACH ROW PRECEDES other_trigger_name SET NEW.column_name = some_value;

test/parser/mysql/syntax/fixtures/select.sql

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,11 @@ SELECT id, data INTO @x, @y FROM test.t1 LIMIT 1;
7070
SELECT * FROM t1 AS t INTO @x,@y,@z;
7171
SELECT * FROM t1 AS t INTO OUTFILE '/tmp/select-values.txt';
7272
SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM test_table;
73+
74+
SELECT ID ,SUM(COL_1) AS SUM_COL_1 FROM (
75+
(SELECT ID ,COL_1 FROM TEST_AUTO_INC
76+
UNION ALL
77+
SELECT ID ,COL_1 FROM TEST_AUTO_INC TAI)
78+
UNION ALL
79+
(SELECT ID ,COL_1 FROM TEST_AUTO_INC TAI)
80+
)SS GROUP BY 1 ORDER BY 1;

0 commit comments

Comments
 (0)