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 3ab35148750 Support MySQL Oracle DROP USER statement for SQL parsing 
based on IP address deletion. (#25620)
3ab35148750 is described below

commit 3ab351487509e2381ce90f1df5ece778640d9e20
Author: niu giao giao <[email protected]>
AuthorDate: Tue May 16 09:17:27 2023 +0800

    Support MySQL Oracle DROP USER statement for SQL parsing based on IP 
address deletion. (#25620)
    
    * Support MySQL Oracle DROP USER statement for SQL parsing based on IP 
address deletion.(#25535)
    
    * Add DROP USER statement test database type.(#25620)
    
    * Formatting IP address lexicon (#25620)
    
    * Define IP rules (#25620)
---
 .../dialect/mysql/src/main/antlr4/imports/mysql/BaseRule.g4    | 10 +++++++---
 .../dialect/mysql/src/main/antlr4/imports/mysql/Literals.g4    |  6 +++++-
 test/it/parser/src/main/resources/case/dcl/drop-user.xml       |  1 +
 .../parser/src/main/resources/sql/supported/dcl/drop-user.xml  |  1 +
 4 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/BaseRule.g4 
b/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/BaseRule.g4
index 6290f98bed1..11c45d1f183 100644
--- a/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/BaseRule.g4
+++ b/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/BaseRule.g4
@@ -567,11 +567,15 @@ identifierKeywordsAmbiguous4SystemVariables
     | PERSIST_ONLY
     | SESSION
     ;
-    
+
 textOrIdentifier
-    : identifier | string_
+    : identifier  | string_ | ipAddress
     ;
-    
+
+ipAddress
+    : IP_ADDRESS
+    ;
+
 variable
     : userVariable | systemVariable
     ;
diff --git a/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/Literals.g4 
b/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/Literals.g4
index 7e16bb472b0..ce81a04906f 100644
--- a/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/Literals.g4
+++ b/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/Literals.g4
@@ -66,10 +66,14 @@ BIT_NUM_
     ;
 
 IDENTIFIER_
-    : 
[A-Za-z_$0-9\u0080-\uFFFF]*?[A-Za-z_$\u0080-\uFFFF]+?[A-Za-z_$0-9\u0080-\uFFFF]*
+    :  
[A-Za-z_$0-9\u0080-\uFFFF]*?[A-Za-z_$\u0080-\uFFFF]+?[A-Za-z_$0-9\u0080-\uFFFF]*
     |  BQ_ ~'`'+ BQ_
     ;
 
+IP_ADDRESS
+    : INT_NUM_ DOT_ INT_NUM_ DOT_ INT_NUM_ DOT_ INT_NUM_
+    ;
+
 NOT_SUPPORT_
     : 'not support'
     ;
diff --git a/test/it/parser/src/main/resources/case/dcl/drop-user.xml 
b/test/it/parser/src/main/resources/case/dcl/drop-user.xml
index 7078887e1d8..2386ca48345 100644
--- a/test/it/parser/src/main/resources/case/dcl/drop-user.xml
+++ b/test/it/parser/src/main/resources/case/dcl/drop-user.xml
@@ -19,6 +19,7 @@
 <sql-parser-test-cases>
     <drop-user sql-case-id="drop_user_without_hostname" />
     <drop-user sql-case-id="drop_user_with_hostname" />
+    <drop-user sql-case-id="drop_user_with_ip" />
     <drop-user sql-case-id="drop_user_cascade" />
     <drop-user sql-case-id="drop_user" />
     <drop-user sql-case-id="drop_users" />
diff --git a/test/it/parser/src/main/resources/sql/supported/dcl/drop-user.xml 
b/test/it/parser/src/main/resources/sql/supported/dcl/drop-user.xml
index 9b317d907cb..f19e47d39a9 100644
--- a/test/it/parser/src/main/resources/sql/supported/dcl/drop-user.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dcl/drop-user.xml
@@ -19,6 +19,7 @@
 <sql-cases>
     <sql-case id="drop_user_without_hostname" value="DROP USER user_dev" 
db-types="Oracle,PostgreSQL,openGauss,SQLServer" />
     <sql-case id="drop_user_with_hostname" value="DROP USER 
user_dev@localhost" db-types="MySQL,Oracle" />
+    <sql-case id="drop_user_with_ip" value="DROP USER [email protected]" 
db-types="MySQL,Oracle" />
     <sql-case id="drop_user_cascade" value="DROP USER user_dev CASCADE" 
db-types="Oracle" />
     <sql-case id="drop_user" value="DROP USER user1" 
db-types="MySQL,Oracle,PostgreSQL,openGauss,SQLServer" />
     <sql-case id="drop_users" value="DROP USER user1, user2" 
db-types="MySQL,PostgreSQL,openGauss" />

Reply via email to