You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ji...@apache.org on 2022/11/28 08:23:32 UTC
[shardingsphere] branch master updated: Optimize DistSQL for build in algorithms. (#22477)
This is an automated email from the ASF dual-hosted git repository.
jianglongtao 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 3caf098bb9c Optimize DistSQL for build in algorithms. (#22477)
3caf098bb9c is described below
commit 3caf098bb9c6e1615573e7c73cd1fff4479f3fb6
Author: Zichao <57...@users.noreply.github.com>
AuthorDate: Mon Nov 28 21:23:26 2022 +1300
Optimize DistSQL for build in algorithms. (#22477)
---
.../main/antlr4/imports/db-discovery/BaseRule.g4 | 6 +++-
.../main/antlr4/imports/db-discovery/Keyword.g4 | 6 +++-
.../src/main/antlr4/imports/encrypt/BaseRule.g4 | 11 +++++-
.../src/main/antlr4/imports/encrypt/Keyword.g4 | 24 +++++++++++++
.../antlr4/imports/readwrite-splitting/BaseRule.g4 | 15 +++++++-
.../antlr4/imports/readwrite-splitting/Keyword.g4 | 40 ++++++++++++++++++++++
test/parser/src/main/resources/case/rdl/create.xml | 31 +++++++++++++++++
.../main/resources/sql/supported/rdl/create.xml | 3 ++
8 files changed, 132 insertions(+), 4 deletions(-)
diff --git a/features/db-discovery/distsql/parser/src/main/antlr4/imports/db-discovery/BaseRule.g4 b/features/db-discovery/distsql/parser/src/main/antlr4/imports/db-discovery/BaseRule.g4
index 086ee332f93..20152ffc645 100644
--- a/features/db-discovery/distsql/parser/src/main/antlr4/imports/db-discovery/BaseRule.g4
+++ b/features/db-discovery/distsql/parser/src/main/antlr4/imports/db-discovery/BaseRule.g4
@@ -28,7 +28,11 @@ algorithmDefinition
;
algorithmTypeName
- : STRING
+ : STRING | buildInAlgorithmTypeName
+ ;
+
+buildInAlgorithmTypeName
+ : MYSQLMGR
;
propertiesDefinition
diff --git a/features/db-discovery/distsql/parser/src/main/antlr4/imports/db-discovery/Keyword.g4 b/features/db-discovery/distsql/parser/src/main/antlr4/imports/db-discovery/Keyword.g4
index 1fbaa303620..6f49cc66c74 100644
--- a/features/db-discovery/distsql/parser/src/main/antlr4/imports/db-discovery/Keyword.g4
+++ b/features/db-discovery/distsql/parser/src/main/antlr4/imports/db-discovery/Keyword.g4
@@ -17,7 +17,7 @@
lexer grammar Keyword;
-import Alphabet;
+import Alphabet, Symbol;
WS
: [ \t\r\n] + ->skip
@@ -102,3 +102,7 @@ EXISTS
COUNT
: C O U N T
;
+
+MYSQLMGR
+ : M Y S Q L DOT M G R
+ ;
diff --git a/features/encrypt/distsql/parser/src/main/antlr4/imports/encrypt/BaseRule.g4 b/features/encrypt/distsql/parser/src/main/antlr4/imports/encrypt/BaseRule.g4
index f3bd1e0d4dd..317debf617a 100644
--- a/features/encrypt/distsql/parser/src/main/antlr4/imports/encrypt/BaseRule.g4
+++ b/features/encrypt/distsql/parser/src/main/antlr4/imports/encrypt/BaseRule.g4
@@ -28,7 +28,16 @@ algorithmDefinition
;
algorithmTypeName
- : STRING
+ : buildinAlgorithmTypeName | STRING
+ ;
+
+buildinAlgorithmTypeName
+ : MD5
+ | AES
+ | RC4
+ | SM3
+ | SM4
+ | CHAR_DIGEST_LIKE
;
propertiesDefinition
diff --git a/features/encrypt/distsql/parser/src/main/antlr4/imports/encrypt/Keyword.g4 b/features/encrypt/distsql/parser/src/main/antlr4/imports/encrypt/Keyword.g4
index 400a9bb4c77..ab24811f6ce 100644
--- a/features/encrypt/distsql/parser/src/main/antlr4/imports/encrypt/Keyword.g4
+++ b/features/encrypt/distsql/parser/src/main/antlr4/imports/encrypt/Keyword.g4
@@ -142,3 +142,27 @@ EXISTS
COUNT
: C O U N T
;
+
+MD5
+ : M D [5]
+ ;
+
+AES
+ : A E S
+ ;
+
+RC4
+ : R C [4]
+ ;
+
+SM3
+ : S M [3]
+ ;
+
+SM4
+ : S M [4]
+ ;
+
+CHAR_DIGEST_LIKE
+ : C H A R UL_ D I G E S T UL_ L I K E
+ ;
diff --git a/features/readwrite-splitting/distsql/parser/src/main/antlr4/imports/readwrite-splitting/BaseRule.g4 b/features/readwrite-splitting/distsql/parser/src/main/antlr4/imports/readwrite-splitting/BaseRule.g4
index 6fb0fee5215..7a20e7b95a8 100644
--- a/features/readwrite-splitting/distsql/parser/src/main/antlr4/imports/readwrite-splitting/BaseRule.g4
+++ b/features/readwrite-splitting/distsql/parser/src/main/antlr4/imports/readwrite-splitting/BaseRule.g4
@@ -28,7 +28,20 @@ algorithmDefinition
;
algorithmTypeName
- : STRING
+ : STRING | buildInAlgorithmTypeName
+ ;
+
+buildInAlgorithmTypeName
+ : ROUND_ROBIN
+ | RANDOM
+ | WEIGHT
+ | TRANSACTION_RANDOM
+ | TRANSACTION_ROUND_ROBIN
+ | TRANSACTION_WEIGHT
+ | FIXED_REPLICA_RANDOM
+ | FIXED_REPLICA_ROUND_ROBIN
+ | FIXED_REPLICA_WEIGHT
+ | FIXED_PRIMARY
;
propertiesDefinition
diff --git a/features/readwrite-splitting/distsql/parser/src/main/antlr4/imports/readwrite-splitting/Keyword.g4 b/features/readwrite-splitting/distsql/parser/src/main/antlr4/imports/readwrite-splitting/Keyword.g4
index bd3aff17c66..5b9ce7fab0a 100644
--- a/features/readwrite-splitting/distsql/parser/src/main/antlr4/imports/readwrite-splitting/Keyword.g4
+++ b/features/readwrite-splitting/distsql/parser/src/main/antlr4/imports/readwrite-splitting/Keyword.g4
@@ -139,3 +139,43 @@ TRUE
FALSE
: F A L S E
;
+
+ROUND_ROBIN
+ : R O U N D UL_ R O B I N
+ ;
+
+RANDOM
+ : R A N D O M
+ ;
+
+WEIGHT
+ : W E I G H T
+ ;
+
+TRANSACTION_RANDOM
+ : T R A N S A C T I O N UL_ R A N D O M
+ ;
+
+TRANSACTION_ROUND_ROBIN
+ : T R A N S A C T I O N UL_ R O U N D UL_ R O B I N
+ ;
+
+TRANSACTION_WEIGHT
+ : T R A N S A C T I O N UL_ W E I G H T
+ ;
+
+FIXED_REPLICA_RANDOM
+ : F I X E D UL_ R E P L I C A UL_ R A N D O M
+ ;
+
+FIXED_REPLICA_ROUND_ROBIN
+ : F I X E D UL_ R E P L I C A UL_ R O U N D UL_ R O B I N
+ ;
+
+FIXED_REPLICA_WEIGHT
+ : F I X E D UL_ R E P L I C A UL_ W E I G H T
+ ;
+
+FIXED_PRIMARY
+ : F I X E D UL_ P R I M A R Y
+ ;
diff --git a/test/parser/src/main/resources/case/rdl/create.xml b/test/parser/src/main/resources/case/rdl/create.xml
index fe847e08950..ab0175f6f13 100644
--- a/test/parser/src/main/resources/case/rdl/create.xml
+++ b/test/parser/src/main/resources/case/rdl/create.xml
@@ -490,4 +490,35 @@
<key-generate-strategy algorithm-name="snowflake" />
</rule>
</create-sharding-table-rule>
+
+ <create-encrypt-rule sql-case-id="create-encrypt-rule-without-quote-on-build-in-algorithm-type-name">
+ <rule name="t_encrypt" query-with-cipher-column="true">
+ <column name="user_id" plain-column="user_plain" cipher-column="user_cipher">
+ <encryptor algorithm-name="AES">
+ <property key="aes-key-value" value="123456abc" />
+ </encryptor>
+ </column>
+ <column name="order_id" cipher-column="order_cipher">
+ <encryptor algorithm-name="MD5" />
+ </column>
+ </rule>
+ </create-encrypt-rule>
+
+ <create-readwrite-splitting-rule sql-case-id="create-readwrite-splitting-rule-without-quote-on-build-in-algorithm-type-name">
+ <rule name="ms_group_0" write-data-source="write_ds" load-balancer="RANDOM">
+ <read-data-source>read_ds_0</read-data-source>
+ <read-data-source>read_ds_1</read-data-source>
+ </rule>
+ </create-readwrite-splitting-rule>
+
+ <create-database-discovery-definition-rule sql-case-id="create-db-discovery-rule-without-quote-on-build-in-db-discovery-type-name">
+ <rule rule-name="db_discovery_group_0" type="MYSQL.MGR">
+ <data-source>ds_0</data-source>
+ <data-source>ds_1</data-source>
+ <discovery-type algorithm-name="MYSQL.MGR">
+ <property key="group-name" value="92504d5b-6dec" />
+ </discovery-type>
+ <property key="keep-alive-cron" value="0/5 * * * * ?" />
+ </rule>
+ </create-database-discovery-definition-rule>
</sql-parser-test-cases>
diff --git a/test/parser/src/main/resources/sql/supported/rdl/create.xml b/test/parser/src/main/resources/sql/supported/rdl/create.xml
index 5aecdc3ad3b..5f8a461a56f 100644
--- a/test/parser/src/main/resources/sql/supported/rdl/create.xml
+++ b/test/parser/src/main/resources/sql/supported/rdl/create.xml
@@ -61,4 +61,7 @@
<sql-case id="create-sharding-auditor" value="CREATE SHARDING AUDITOR sharding_key_required_auditor(TYPE(NAME='DML_SHARDING_CONDITIONS'))" db-types="ShardingSphere" />
<sql-case id="single-register-migration-source-storage-unit" value="REGISTER MIGRATION SOURCE STORAGE UNIT ds_0 (URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456');" db-types="ShardingSphere" />
<sql-case id="create-sharding-table-rule-without-quote-on-keyword" value="CREATE SHARDING TABLE RULE t_order_item (DATANODES('ds_${0..1}.t_order_item_${0..1}'), DATABASE_STRATEGY(TYPE=standard,SHARDING_COLUMN=user_id,SHARDING_ALGORITHM(TYPE(NAME=inline,PROPERTIES('algorithm-expression'='ds_${user_id % 2}')))), TABLE_STRATEGY(TYPE=standard,SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME=inline,PROPERTIES('algorithm-expression'='t_order_item_${order_id % 2}')))), KEY_GENERATE_STR [...]
+ <sql-case id="create-encrypt-rule-without-quote-on-build-in-algorithm-type-name" value="CREATE ENCRYPT RULE t_encrypt (COLUMNS((NAME=user_id,PLAIN=user_plain,CIPHER=user_cipher,TYPE(NAME=AES,PROPERTIES('aes-key-value'='123456abc'))), (NAME=order_id, CIPHER =order_cipher,TYPE(NAME=MD5))),QUERY_WITH_CIPHER_COLUMN=true);" db-types="ShardingSphere" />
+ <sql-case id="create-readwrite-splitting-rule-without-quote-on-build-in-algorithm-type-name" value="CREATE READWRITE_SPLITTING RULE ms_group_0 (WRITE_STORAGE_UNIT=write_ds, READ_STORAGE_UNITS(read_ds_0,read_ds_1), TYPE(NAME=RANDOM));" db-types="ShardingSphere" />
+ <sql-case id="create-db-discovery-rule-without-quote-on-build-in-db-discovery-type-name" value="CREATE DB_DISCOVERY RULE db_discovery_group_0 (STORAGE_UNITS(ds_0, ds_1), TYPE(NAME=MYSQL.MGR,PROPERTIES('group-name'='92504d5b-6dec')),HEARTBEAT(PROPERTIES('keep-alive-cron'='0/5 * * * * ?')));" db-types="ShardingSphere" />
</sql-cases>