This is an automated email from the ASF dual-hosted git repository.

duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 43f20e86bbd Support parsing MySQL stored procedure syntax (#35137)
43f20e86bbd is described below

commit 43f20e86bbde0beadf9fa0cff3c6c3c1a88f9218
Author: Chakkk <chakk6...@gmail.com>
AuthorDate: Tue Apr 8 14:58:30 2025 +0800

    Support parsing MySQL stored procedure syntax (#35137)
    
    * Support parsing MySQL stored procedure syntax
    
    * Update release notes
---
 RELEASE-NOTES.md                                               |  1 +
 .../mysql/src/main/antlr4/imports/mysql/DCLStatement.g4        | 10 +++++-----
 test/it/parser/src/main/resources/case/dcl/revoke.xml          |  3 +++
 .../src/main/resources/sql/supported/dcl/revoke-user.xml       |  3 +++
 4 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index 49f7c9b580a..99e6980626a 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -31,6 +31,7 @@
 1. DistSQL: Add job sharding nodes to the result set of `SHOW MIGRATION LIST` 
- [#35053](https://github.com/apache/shardingsphere/pull/35053)
 1. SQL Parser: Enhance combineType in Oracle to support EXCEPT ALL and 
INTERSECT ALL - [#35099](https://github.com/apache/shardingsphere/pull/35099)
 1. DistSQL: Add InUsedStorageUnitRetriever for single rule - 
[#35131](https://github.com/apache/shardingsphere/pull/35131)
+1. SQL Parser: Support parsing MySQL stored procedure syntax - 
[#35137](https://github.com/apache/shardingsphere/pull/35137)
 
 ### Bug Fixes
 
diff --git 
a/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/DCLStatement.g4 
b/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/DCLStatement.g4
index eb133d7c021..09572eb543a 100644
--- a/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/DCLStatement.g4
+++ b/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/DCLStatement.g4
@@ -27,11 +27,11 @@ grant
     ;
 
 revoke
-    : REVOKE roleOrPrivileges FROM userList # revokeFrom
-    | REVOKE roleOrPrivileges ON aclType? grantIdentifier FROM userList # 
revokeOnFrom
-    | REVOKE ALL PRIVILEGES? ON aclType? grantIdentifier FROM userList # 
revokeOnFrom
-    | REVOKE ALL PRIVILEGES? COMMA_ GRANT OPTION FROM userList # revokeFrom
-    | REVOKE PROXY ON username FROM userList # revokeOnFrom
+    : REVOKE ifExists? roleOrPrivileges FROM userList # revokeFrom
+    | REVOKE ifExists? roleOrPrivileges ON aclType? grantIdentifier FROM 
userList # revokeOnFrom
+    | REVOKE ifExists? ALL PRIVILEGES? ON aclType? grantIdentifier FROM 
userList # revokeOnFrom
+    | REVOKE ifExists? ALL PRIVILEGES? COMMA_ GRANT OPTION FROM userList # 
revokeFrom
+    | REVOKE ifExists? PROXY ON username FROM userList # revokeOnFrom
     ;
 
 userList
diff --git a/test/it/parser/src/main/resources/case/dcl/revoke.xml 
b/test/it/parser/src/main/resources/case/dcl/revoke.xml
index a5969a0dc53..3d430aa2e87 100644
--- a/test/it/parser/src/main/resources/case/dcl/revoke.xml
+++ b/test/it/parser/src/main/resources/case/dcl/revoke.xml
@@ -230,4 +230,7 @@
     <revoke sql-case-id="revoke_execute_on_xml_schema_collection" />
     <revoke sql-case-id="revoke_usage_on_column_encryption_key" />
     <revoke sql-case-id="revoke_usage_on_client_master_key" />
+    <revoke sql-case-id="revoke_alter_execute_on_procedure_from_role" />
+    <revoke sql-case-id="revoke_grant_option_on_procedure_from_user" />
+    <revoke sql-case-id="revoke_alter_execute_on_procedure_from_user" />
 </sql-parser-test-cases>
diff --git 
a/test/it/parser/src/main/resources/sql/supported/dcl/revoke-user.xml 
b/test/it/parser/src/main/resources/sql/supported/dcl/revoke-user.xml
index 4db968095c4..cf1329dc2c4 100644
--- a/test/it/parser/src/main/resources/sql/supported/dcl/revoke-user.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dcl/revoke-user.xml
@@ -127,4 +127,7 @@
     <sql-case id="revoke_execute_on_xml_schema_collection" value="REVOKE 
EXECUTE ON XML SCHEMA COLLECTION::schema1.xmlschemacollection1 FROM user1" 
db-types="SQLServer" />
     <sql-case id="revoke_usage_on_column_encryption_key" value="REVOKE USAGE 
ON COLUMN_ENCRYPTION_KEY MyCEK1 FROM user1" db-types="openGauss" />
     <sql-case id="revoke_usage_on_client_master_key" value="REVOKE USAGE ON 
CLIENT_MASTER_KEY MyCMK1 FROM user1" db-types="openGauss" />
+    <sql-case id="revoke_alter_execute_on_procedure_from_role" value="REVOKE 
IF EXISTS ALTER ROUTINE, EXECUTE ON PROCEDURE rngp_db.rngp_proc FROM rngp_role" 
db-types="MySQL" />
+    <sql-case id="revoke_grant_option_on_procedure_from_user" value="REVOKE IF 
EXISTS GRANT OPTION ON PROCEDURE rngp_db.rngp_proc FROM rngp_user" 
db-types="MySQL" />
+    <sql-case id="revoke_alter_execute_on_procedure_from_user" value="REVOKE 
IF EXISTS ALTER ROUTINE, EXECUTE ON PROCEDURE rngp_db.rngp_proc FROM rngp_user" 
db-types="MySQL" />
 </sql-cases>

Reply via email to