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 14:21:35 UTC
[shardingsphere] branch master updated: Optimize global-rule-distsql (#22485)
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 5954e8805d8 Optimize global-rule-distsql (#22485)
5954e8805d8 is described below
commit 5954e8805d8576c98d60339e078775bdcd629e36
Author: Zichao <57...@users.noreply.github.com>
AuthorDate: Tue Nov 29 03:21:28 2022 +1300
Optimize global-rule-distsql (#22485)
---
.../src/main/antlr4/imports/traffic/Keyword.g4 | 16 +++++++++++++++
.../main/antlr4/imports/traffic/RALStatement.g4 | 10 ++++++++-
.../src/main/antlr4/imports/transaction/Keyword.g4 | 24 ++++++++++++++++++++++
.../antlr4/imports/transaction/RALStatement.g4 | 12 +++++++++--
.../src/main/resources/case/ral/updatable.xml | 15 +++++++++++++-
.../main/resources/sql/supported/ral/updatable.xml | 4 +++-
6 files changed, 76 insertions(+), 5 deletions(-)
diff --git a/kernel/traffic/distsql/parser/src/main/antlr4/imports/traffic/Keyword.g4 b/kernel/traffic/distsql/parser/src/main/antlr4/imports/traffic/Keyword.g4
index a46575dc48f..c4e25b0a84e 100644
--- a/kernel/traffic/distsql/parser/src/main/antlr4/imports/traffic/Keyword.g4
+++ b/kernel/traffic/distsql/parser/src/main/antlr4/imports/traffic/Keyword.g4
@@ -82,3 +82,19 @@ IF
EXISTS
: E X I S T S
;
+
+SQL_MATCH
+ : S Q L UL_ M A T C H
+ ;
+
+SQL_HINT
+ : S Q L UL_ H I N T
+ ;
+
+RANDOM
+ : R A N D O M
+ ;
+
+ROUND_ROBIN
+ : R O U N D UL_ R O B I N
+ ;
diff --git a/kernel/traffic/distsql/parser/src/main/antlr4/imports/traffic/RALStatement.g4 b/kernel/traffic/distsql/parser/src/main/antlr4/imports/traffic/RALStatement.g4
index e76201c1bce..3ae3abafa33 100644
--- a/kernel/traffic/distsql/parser/src/main/antlr4/imports/traffic/RALStatement.g4
+++ b/kernel/traffic/distsql/parser/src/main/antlr4/imports/traffic/RALStatement.g4
@@ -56,7 +56,15 @@ loadBalancerDefinition
;
algorithmTypeName
- : STRING
+ : buildInTrafficAlgorithmTypeName | buildInLoadBalancerTypeName | STRING
+ ;
+
+buildInTrafficAlgorithmTypeName
+ : SQL_MATCH | SQL_HINT
+ ;
+
+buildInLoadBalancerTypeName
+ : RANDOM | ROUND_ROBIN
;
label
diff --git a/kernel/transaction/distsql/parser/src/main/antlr4/imports/transaction/Keyword.g4 b/kernel/transaction/distsql/parser/src/main/antlr4/imports/transaction/Keyword.g4
index 6930ae3d436..63bd1439415 100644
--- a/kernel/transaction/distsql/parser/src/main/antlr4/imports/transaction/Keyword.g4
+++ b/kernel/transaction/distsql/parser/src/main/antlr4/imports/transaction/Keyword.g4
@@ -54,3 +54,27 @@ NAME
PROPERTIES
: P R O P E R T I E S
;
+
+LOCAL
+ : L O C A L
+ ;
+
+XA
+ : X A
+ ;
+
+BASE
+ : B A S E
+ ;
+
+ATOMIKOS
+ : A T O M I K O S
+ ;
+
+NARAYANA
+ : N A R A Y A N A
+ ;
+
+BITRONIX
+ : B I T R O N I X
+ ;
diff --git a/kernel/transaction/distsql/parser/src/main/antlr4/imports/transaction/RALStatement.g4 b/kernel/transaction/distsql/parser/src/main/antlr4/imports/transaction/RALStatement.g4
index 1187ab34dad..c5b45f78dfe 100644
--- a/kernel/transaction/distsql/parser/src/main/antlr4/imports/transaction/RALStatement.g4
+++ b/kernel/transaction/distsql/parser/src/main/antlr4/imports/transaction/RALStatement.g4
@@ -36,11 +36,19 @@ providerDefinition
;
defaultType
- : STRING
+ : STRING | buildInDefaultTransactionType
+ ;
+
+buildInDefaultTransactionType
+ : LOCAL | XA | BASE
;
providerName
- : STRING
+ : STRING | buildInProviderTypeName
+ ;
+
+buildInProviderTypeName
+ : ATOMIKOS | NARAYANA | BITRONIX
;
propertiesDefinition
diff --git a/test/parser/src/main/resources/case/ral/updatable.xml b/test/parser/src/main/resources/case/ral/updatable.xml
index f30e70ce39d..4a5e351c027 100644
--- a/test/parser/src/main/resources/case/ral/updatable.xml
+++ b/test/parser/src/main/resources/case/ral/updatable.xml
@@ -33,6 +33,7 @@
</alter-sql-parser-rule>
<alter-local-transaction-rule sql-case-id="alter-local-transaction-rule" />
<alter-xa-transaction-rule sql-case-id="alter-xa-transaction-rule" />
+ <alter-xa-transaction-rule sql-case-id="alter-xa-transaction-rule-without-quote-on-build-in-default-type-name-and-provider-type-name" />
<create-traffic-rule sql-case-id="create-traffic-rule">
<rule name="sql_match_traffic">
@@ -61,7 +62,19 @@
<drop-traffic-rule sql-case-id="drop-traffic-rule">
<name>rule_name</name>
</drop-traffic-rule>
-
+
+ <create-traffic-rule sql-case-id="create-traffic-rule-without-quote-on-build-in-traffic-algorithm-type-name-and-load-balancer-type-name">
+ <rule name="sql_match_traffic">
+ <label>OLTP</label>
+ <traffic-algorithm algorithm-name="SQL_MATCH">
+ <property key="sql" value="SELECT * FROM t_order WHERE order_id = ?; UPDATE t_order SET order_id = ?;" />
+ </traffic-algorithm>
+ <load-balancer algorithm-name="RANDOM">
+ <property key="key" value="value" />
+ </load-balancer>
+ </rule>
+ </create-traffic-rule>
+
<alter-compute-node sql-case-id="alter-compute-node-xa-recovery-nodes" instance-id="instance_xa_recovery" key="XA_RECOVERY_NODES" value="instance_1" />
<alter-compute-node sql-case-id="alter-compute-node-xa-recovery-nodes-with-multiple-values" instance-id="instance_xa_recovery_multiple" key="XA_RECOVERY_NODES" value="instance_1,instance_2" />
diff --git a/test/parser/src/main/resources/sql/supported/ral/updatable.xml b/test/parser/src/main/resources/sql/supported/ral/updatable.xml
index 8e5bca21a87..bcbe2fba589 100644
--- a/test/parser/src/main/resources/sql/supported/ral/updatable.xml
+++ b/test/parser/src/main/resources/sql/supported/ral/updatable.xml
@@ -28,10 +28,12 @@
<sql-case id="alter-sql-parser-rule" value="ALTER SQL_PARSER RULE SQL_COMMENT_PARSE_ENABLE=false,PARSE_TREE_CACHE(INITIAL_CAPACITY=10, MAXIMUM_SIZE=11,CONCURRENCY_LEVEL=1), SQL_STATEMENT_CACHE(INITIAL_CAPACITY=11, MAXIMUM_SIZE=11,CONCURRENCY_LEVEL=100)" db-types="ShardingSphere" />
<sql-case id="alter-local-transaction-rule" value="ALTER TRANSACTION RULE (DEFAULT='LOCAL')" db-types="ShardingSphere" />
<sql-case id="alter-xa-transaction-rule" value="ALTER TRANSACTION RULE(DEFAULT='XA', TYPE(NAME='Atomikos'))" db-types="ShardingSphere" />
-
+ <sql-case id="alter-xa-transaction-rule-without-quote-on-build-in-default-type-name-and-provider-type-name" value="ALTER TRANSACTION RULE(DEFAULT=XA, TYPE(NAME=Atomikos))" db-types="ShardingSphere" />
+
<sql-case id="create-traffic-rule" value="CREATE TRAFFIC RULE sql_match_traffic (LABELS(OLTP),TRAFFIC_ALGORITHM(TYPE(NAME='SQL_MATCH',PROPERTIES('sql' = 'SELECT * FROM t_order WHERE order_id = ?; UPDATE t_order SET order_id = ?;'))), LOAD_BALANCER(TYPE(NAME='RANDOM', PROPERTIES('key'='value'))) )" db-types="ShardingSphere" />
<sql-case id="alter-traffic-rule" value="ALTER TRAFFIC RULE sql_match_traffic (LABELS(OLTP),TRAFFIC_ALGORITHM(TYPE(NAME='SQL_MATCH',PROPERTIES('sql' = 'SELECT * FROM t_order WHERE order_id = ?; UPDATE t_order SET order_id = ?;'))), LOAD_BALANCER(TYPE(NAME='RANDOM', PROPERTIES('key'='value'))) )" db-types="ShardingSphere" />
<sql-case id="drop-traffic-rule" value="DROP TRAFFIC RULE rule_name" db-types="ShardingSphere" />
+ <sql-case id="create-traffic-rule-without-quote-on-build-in-traffic-algorithm-type-name-and-load-balancer-type-name" value="CREATE TRAFFIC RULE sql_match_traffic (LABELS(OLTP),TRAFFIC_ALGORITHM(TYPE(NAME=SQL_MATCH,PROPERTIES('sql' = 'SELECT * FROM t_order WHERE order_id = ?; UPDATE t_order SET order_id = ?;'))), LOAD_BALANCER(TYPE(NAME=RANDOM, PROPERTIES('key'='value'))) )" db-types="ShardingSphere" />
<sql-case id="alter-compute-node-xa-recovery-nodes" value="ALTER COMPUTE NODE instance_xa_recovery SET XA_RECOVERY_NODES='instance_1'" db-types="ShardingSphere" />
<sql-case id="alter-compute-node-xa-recovery-nodes-with-multiple-values" value="ALTER COMPUTE NODE instance_xa_recovery_multiple SET XA_RECOVERY_NODES='instance_1,instance_2'" db-types="ShardingSphere" />