diff --git a/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mysql/generated/MySqlParser.g4 b/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mysql/generated/MySqlParser.g4 index ebc646692..e64c4643c 100644 --- a/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mysql/generated/MySqlParser.g4 +++ b/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mysql/generated/MySqlParser.g4 @@ -1719,15 +1719,16 @@ renameUser ; revokeStatement - : REVOKE privelegeClause (',' privelegeClause)* + : REVOKE ifExists? (privelegeClause | uid) (',' privelegeClause | uid)* ON privilegeObject=(TABLE | FUNCTION | PROCEDURE)? privilegeLevel - FROM userName (',' userName)* #detailRevoke - | REVOKE ALL PRIVILEGES? ',' GRANT OPTION - FROM userName (',' userName)* #shortRevoke - | REVOKE (userName | uid) (',' (userName | uid))* - FROM (userName | uid) (',' (userName | uid))* #roleRevoke + FROM userName (',' userName)* (IGNORE UNKNOWN USER)? #detailRevoke + | REVOKE ifExists? ALL PRIVILEGES? ',' GRANT OPTION + FROM userName (',' userName)* (IGNORE UNKNOWN USER)? #shortRevoke + | REVOKE ifExists? (userName | uid) (',' (userName | uid))* + FROM (userName | uid) (',' (userName | uid))* + (IGNORE UNKNOWN USER)? #roleRevoke ; revokeProxy diff --git a/debezium-ddl-parser/src/test/resources/mysql/examples/grant.sql b/debezium-ddl-parser/src/test/resources/mysql/examples/grant.sql index 32c3e9cb7..351fe99bd 100644 --- a/debezium-ddl-parser/src/test/resources/mysql/examples/grant.sql +++ b/debezium-ddl-parser/src/test/resources/mysql/examples/grant.sql @@ -99,6 +99,8 @@ REVOKE reader FROM 'mysqluser'@'localhost' REVOKE reader FROM topreader REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'retool'@ REVOKE `cloudsqlsuperuser`@`%` FROM `sarmonitoring`@`10.90.29.%` +REVOKE IF EXISTS SELECT ON test.t1 FROM jerry@localhost; +REVOKE IF EXISTS Bogus ON test FROM jerry@localhost IGNORE UNKNOWN USER; -- MariaDB GRANT BINLOG_MONITOR ON *.* TO 'mysqluser'@'localhost'