From d1c70d64c95858904e629af603870ad2c7dc3f61 Mon Sep 17 00:00:00 2001 From: Jiri Pechanec Date: Fri, 6 Sep 2024 08:25:58 +0200 Subject: [PATCH] DBZ-8209 Support for unkown roles and users in REVOKE --- .../ddl/parser/mysql/generated/MySqlParser.g4 | 13 +++++++------ .../src/test/resources/mysql/examples/grant.sql | 2 ++ 2 files changed, 9 insertions(+), 6 deletions(-) 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'