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 eff86d6cb17 Add default sharding strategy for 
`ConvertYamlConfigurationExecutor` (#24306)
eff86d6cb17 is described below

commit eff86d6cb178ac35610355cd2e24417f3aa01381
Author: Zichao <[email protected]>
AuthorDate: Wed Feb 22 22:47:49 2023 +0800

    Add default sharding strategy for `ConvertYamlConfigurationExecutor` 
(#24306)
---
 .../ral/common/constant/DistSQLScriptConstants.java |  4 ++++
 .../queryable/ConvertYamlConfigurationExecutor.java | 21 +++++++++++++++++++--
 .../src/test/resources/expected/convert-mix.yaml    |  2 ++
 .../test/resources/expected/convert-sharding.yaml   |  4 ++++
 4 files changed, 29 insertions(+), 2 deletions(-)

diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/constant/DistSQLScriptConstants.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/constant/DistSQLScriptConstants.java
index 64067021e12..54750085155 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/constant/DistSQLScriptConstants.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/constant/DistSQLScriptConstants.java
@@ -123,6 +123,10 @@ public final class DistSQLScriptConstants {
     
     public static final String BROADCAST_TABLE_RULE = "CREATE BROADCAST TABLE 
RULE %s";
     
+    public static final String DEFAULT_DATABASE_STRATEGY = "CREATE DEFAULT 
SHARDING DATABASE STRATEGY";
+    
+    public static final String DEFAULT_TABLE_STRATEGY = "CREATE DEFAULT 
SHARDING TABLE STRATEGY";
+    
     public static final String CREATE_READWRITE_SPLITTING_RULE = "CREATE 
READWRITE_SPLITTING RULE";
     
     public static final String READWRITE_SPLITTING_FOR_STATIC = " %s ("
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java
index 6a0604b3d6d..88d7bb5a71b 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java
@@ -81,6 +81,7 @@ import java.util.Comparator;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Objects;
 import java.util.Properties;
 import java.util.TreeMap;
 
@@ -225,7 +226,7 @@ public final class ConvertYamlConfigurationExecutor 
implements QueryableRALExecu
         appendShardingTableRules(ruleConfig, result);
         appendShardingBindingTableRules(ruleConfig, result);
         appendShardingBroadcastTableRules(ruleConfig, result);
-        // TODO append defaultStrategy
+        appendDefaultShardingStrategy(ruleConfig, result);
     }
     
     private void appendShardingTableRules(final ShardingRuleConfiguration 
ruleConfig, final StringBuilder result) {
@@ -327,7 +328,9 @@ public final class ConvertYamlConfigurationExecutor 
implements QueryableRALExecu
         if (null == strategyConfig) {
             return;
         }
-        
result.append(DistSQLScriptConstants.COMMA).append(System.lineSeparator());
+        if (Objects.equals(strategyType, 
DistSQLScriptConstants.DATABASE_STRATEGY) || Objects.equals(strategyType, 
DistSQLScriptConstants.TABLE_STRATEGY)) {
+            
result.append(DistSQLScriptConstants.COMMA).append(System.lineSeparator());
+        }
         String type = strategyConfig.getType().toLowerCase();
         String algorithmDefinition = 
getAlgorithmType(shardingAlgorithms.get(strategyConfig.getShardingAlgorithmName()));
         switch (type) {
@@ -374,6 +377,20 @@ public final class ConvertYamlConfigurationExecutor 
implements QueryableRALExecu
         
result.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
     }
     
+    private void appendDefaultShardingStrategy(final ShardingRuleConfiguration 
ruleConfig, final StringBuilder result) {
+        if (null == ruleConfig.getDefaultDatabaseShardingStrategy() && null == 
ruleConfig.getDefaultTableShardingStrategy()) {
+            return;
+        }
+        if (null != ruleConfig.getDefaultDatabaseShardingStrategy()) {
+            appendStrategy(ruleConfig.getDefaultDatabaseShardingStrategy(), 
DistSQLScriptConstants.DEFAULT_DATABASE_STRATEGY, result, 
ruleConfig.getShardingAlgorithms());
+            
result.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
+        }
+        if (null != ruleConfig.getDefaultTableShardingStrategy()) {
+            appendStrategy(ruleConfig.getDefaultTableShardingStrategy(), 
DistSQLScriptConstants.DEFAULT_TABLE_STRATEGY, result, 
ruleConfig.getShardingAlgorithms());
+            
result.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
+        }
+    }
+    
     private void appendReadWriteSplittingDistSQL(final 
ReadwriteSplittingRuleConfiguration ruleConfig, final StringBuilder result) {
         if (ruleConfig.getDataSources().isEmpty()) {
             return;
diff --git a/proxy/backend/core/src/test/resources/expected/convert-mix.yaml 
b/proxy/backend/core/src/test/resources/expected/convert-mix.yaml
index 66df564c746..d92dbcb03b3 100644
--- a/proxy/backend/core/src/test/resources/expected/convert-mix.yaml
+++ b/proxy/backend/core/src/test/resources/expected/convert-mix.yaml
@@ -78,3 +78,5 @@ DATANODES('replica_ds_${0..1}.t_order_${0..1}'),
 TABLE_STRATEGY(TYPE='standard', SHARDING_COLUMN=order_id, 
SHARDING_ALGORITHM(TYPE(NAME='inline', 
PROPERTIES('algorithm-expression'='t_order_${order_id % 2}')))),
 KEY_GENERATE_STRATEGY(COLUMN=order_id, TYPE(NAME='snowflake'))
 );
+
+CREATE DEFAULT SHARDING DATABASE STRATEGY(TYPE='standard', 
SHARDING_COLUMN=user_id, SHARDING_ALGORITHM(TYPE(NAME='inline', 
PROPERTIES('algorithm-expression'='replica_ds_${user_id % 2}'))));
diff --git 
a/proxy/backend/core/src/test/resources/expected/convert-sharding.yaml 
b/proxy/backend/core/src/test/resources/expected/convert-sharding.yaml
index c6041420d97..0cfec0b4545 100644
--- a/proxy/backend/core/src/test/resources/expected/convert-sharding.yaml
+++ b/proxy/backend/core/src/test/resources/expected/convert-sharding.yaml
@@ -43,3 +43,7 @@ AUDIT_STRATEGY(TYPE(NAME='dml_sharding_conditions'), 
ALLOW_HINT_DISABLE=true)
 );
 
 CREATE BROADCAST TABLE RULE t_address;
+
+CREATE DEFAULT SHARDING DATABASE STRATEGY(TYPE='standard', 
SHARDING_COLUMN=user_id, SHARDING_ALGORITHM(TYPE(NAME='inline', 
PROPERTIES('algorithm-expression'='ds_${user_id % 2}', 
'datetime-lower'='2022-01-01 00:00:00'))));
+
+CREATE DEFAULT SHARDING TABLE STRATEGY(TYPE='none');

Reply via email to