Skip to content

Commit 0bdd117

Browse files
committed
fix(mysql): support IF EXISTS/IF NOT EXISTS revoke/trigger forms
1 parent 3b2b556 commit 0bdd117

9 files changed

Lines changed: 10831 additions & 10570 deletions

mysql/MySQLParser.g4

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -700,7 +700,7 @@ viewSuid:
700700
;
701701

702702
createTrigger:
703-
definerClause? TRIGGER_SYMBOL triggerName timing = (BEFORE_SYMBOL | AFTER_SYMBOL) event = (
703+
definerClause? TRIGGER_SYMBOL ifNotExists? triggerName timing = (BEFORE_SYMBOL | AFTER_SYMBOL) event = (
704704
INSERT_SYMBOL
705705
| UPDATE_SYMBOL
706706
| DELETE_SYMBOL
@@ -1883,15 +1883,19 @@ renameUser:
18831883
;
18841884

18851885
revoke:
1886-
REVOKE_SYMBOL (
1886+
REVOKE_SYMBOL ifExists? (
18871887
roleOrPrivilegesList FROM_SYMBOL userList
18881888
| roleOrPrivilegesList onTypeTo FROM_SYMBOL userList
18891889
| ALL_SYMBOL PRIVILEGES_SYMBOL? (
18901890
ON_SYMBOL aclType? grantIdentifier
18911891
| COMMA_SYMBOL GRANT_SYMBOL OPTION_SYMBOL FROM_SYMBOL userList
18921892
)
18931893
| PROXY_SYMBOL ON_SYMBOL user FROM_SYMBOL userList
1894-
)
1894+
) ignoreUnknownUser?
1895+
;
1896+
1897+
ignoreUnknownUser:
1898+
IGNORE_SYMBOL UNKNOWN_SYMBOL USER_SYMBOL
18951899
;
18961900

18971901
onTypeTo: // Optional, starting with 8.0.1.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CREATE TRIGGER IF NOT EXISTS `my_trigger` BEFORE INSERT ON `my_table` FOR EACH ROW BEGIN SET NEW.my_col = CONCAT(NEW.mycol, NEW.id); END;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
REVOKE IF EXISTS Bogus ON test FROM jerry@localhost IGNORE UNKNOWN USER;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
REVOKE IF EXISTS SELECT ON test.t1 FROM jerry@localhost;

mysql/mysql_parser.go

Lines changed: 10802 additions & 10567 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mysql/mysqlparser_base_listener.go

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mysql/mysqlparser_base_visitor.go

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mysql/mysqlparser_listener.go

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mysql/mysqlparser_visitor.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)