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 601d5a2d25d Fix oracle parse REVOKE clause error when add EOF (#30371)
601d5a2d25d is described below
commit 601d5a2d25dc2fc5a01d6a30049b391959176ce5
Author: LotusMoon <[email protected]>
AuthorDate: Sat Mar 2 14:10:13 2024 +0800
Fix oracle parse REVOKE clause error when add EOF (#30371)
* Fix oracle parse REVOKE clause error when add EOF
* Fix parse revoke from error
---
.../src/main/antlr4/imports/oracle/DCLStatement.g4 | 21 +++++++++++++++++++--
.../src/main/antlr4/imports/oracle/OracleKeyword.g4 | 1 +
.../it/sql/parser/internal/InternalSQLParserIT.java | 4 +---
3 files changed, 21 insertions(+), 5 deletions(-)
diff --git
a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DCLStatement.g4
b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DCLStatement.g4
index 5a5a1afcd1c..01e9a266564 100644
--- a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DCLStatement.g4
+++ b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DCLStatement.g4
@@ -24,21 +24,37 @@ grant
;
revoke
- : REVOKE (objectPrivilegeClause | systemPrivilegeClause | roleClause)
+ : REVOKE (((objectPrivilegeClause | systemPrivilegeClause)
objectPrivilegeFrom) | roleClause roleClauseFrom)
;
objectPrivilegeClause
: objectPrivileges ON onObjectClause
;
+objectPrivilegeFrom
+ : FROM revokeeClause ((CASCADE CONSTRAINTS) | FORCE)?
+ ;
+
+revokeeClause
+ : (name | PUBLIC) (COMMA_ (name | PUBLIC))*
+ ;
+
systemPrivilegeClause
- : systemPrivilege
+ : systemPrivilege (COMMA_ systemPrivilege)*
;
roleClause
: ignoredIdentifiers
;
+roleClauseFrom
+ : FROM programUnit (COMMA_ programUnit)*
+ ;
+
+programUnit
+ : (FUNCTION | PROCEDURE | PACKAGE) schemaName DOT_ name
+ ;
+
objectPrivileges
: objectPrivilegeType columnNames? (COMMA_ objectPrivilegeType
columnNames?)*
;
@@ -119,6 +135,7 @@ systemPrivilege
| viewsSystemPrivilege
| miscellaneousSystemPrivilege
| ruleSystemPrivilege
+ | name
;
systemPrivilegeOperation
diff --git
a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4
b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4
index 29f03f1329f..f2d4474bb22 100644
--- a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4
+++ b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4
@@ -7807,3 +7807,4 @@ CERTIFICATE_DN
KERBEROS_PRINCIPAL_NAME
: K E R B E R O S UL_ P R I N C I P A L UL_ N A M E
;
+
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalSQLParserIT.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalSQLParserIT.java
index ca86ebadb26..56a57907f4f 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalSQLParserIT.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalSQLParserIT.java
@@ -65,9 +65,7 @@ public abstract class InternalSQLParserIT {
"create_user_with_quota_option", "create_user_with_tablespace",
"drop_database_including_backups_noprompt", "drop_index_with_quota",
"drop_user_with_hostname", "drop_user_with_ip",
"grant_all_object_privileges", "grant_all_system_privileges",
"grant_object_privilege", "grant_object_privilege_to_users",
"grant_object_privilege_column", "grant_object_privileges",
"grant_program", "grant_role", "grant_roles_to_programs",
"grant_roles_to_users", "grant_system_privilege",
"grant_system_privilege_to_users", "grant_system_privileges",
- "grant_user_with_admin", "grant_user_with_grant",
"grant_user_without_hostname", "revoke_all_system_privileges",
"revoke_all_object_privileges", "revoke_object_privilege",
- "revoke_object_privilege_column",
"revoke_object_privilege_from_users", "revoke_object_privileges",
"revoke_program", "revoke_role", "revoke_role_from_user",
"revoke_roles_from_programs",
- "revoke_system_privilege_from_users", "revoke_system_privilege",
"revoke_system_privileges", "revoke_user_from",
"revoke_user_without_hostname"));
+ "grant_user_with_admin", "grant_user_with_grant",
"grant_user_without_hostname"));
// CHECKSTYLE:ON
@ParameterizedTest(name = "{0} ({1}) -> {2}")