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" />