This is an automated email from the ASF dual-hosted git repository.

zhaojinchao 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 9730775d8e7 Fix convert single rule configuration to DistSQL (#30619)
9730775d8e7 is described below

commit 9730775d8e7696f38ac8a59a7b0cc6f7c130a2a6
Author: Raigor <[email protected]>
AuthorDate: Sun Mar 24 07:30:06 2024 +0800

    Fix convert single rule configuration to DistSQL (#30619)
---
 .../handler/constant/SingleDistSQLConstants.java   |  8 +++----
 .../SingleRuleConfigurationToDistSQLConverter.java | 28 ++++++++++++----------
 2 files changed, 19 insertions(+), 17 deletions(-)

diff --git 
a/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/constant/SingleDistSQLConstants.java
 
b/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/constant/SingleDistSQLConstants.java
index 00b7dcc296a..2ec695d5af2 100644
--- 
a/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/constant/SingleDistSQLConstants.java
+++ 
b/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/constant/SingleDistSQLConstants.java
@@ -26,11 +26,9 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class SingleDistSQLConstants {
     
-    public static final String COMMA = ", ";
+    public static final String COMMA = ",";
     
-    public static final String SEMI = ";";
+    public static final String LOAD_SINGLE_TABLE = "LOAD SINGLE TABLE %s;";
     
-    public static final String LOAD_SINGLE_TABLE = "LOAD SINGLE TABLE ";
-    
-    public static final String DATASOURCE_AND_TABLE = "%s.%s";
+    public static final String SET_DEFAULT_SINGLE_TABLE_STORAGE_UNIT = "SET 
DEFAULT SINGLE TABLE STORAGE UNIT = %s;";
 }
diff --git 
a/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/provider/SingleRuleConfigurationToDistSQLConverter.java
 
b/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/provider/SingleRuleConfigurationToDistSQLConverter.java
index d1f2759c6fb..e2d214b096a 100644
--- 
a/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/provider/SingleRuleConfigurationToDistSQLConverter.java
+++ 
b/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/provider/SingleRuleConfigurationToDistSQLConverter.java
@@ -17,12 +17,11 @@
 
 package org.apache.shardingsphere.single.distsql.handler.provider;
 
+import com.google.common.base.Joiner;
 import 
org.apache.shardingsphere.distsql.handler.engine.query.ral.convert.RuleConfigurationToDistSQLConverter;
 import org.apache.shardingsphere.single.api.config.SingleRuleConfiguration;
 import 
org.apache.shardingsphere.single.distsql.handler.constant.SingleDistSQLConstants;
 
-import java.util.Iterator;
-
 /**
  * Single rule configuration to DistSQL converter.
  */
@@ -30,22 +29,27 @@ public final class 
SingleRuleConfigurationToDistSQLConverter implements RuleConf
     
     @Override
     public String convert(final SingleRuleConfiguration ruleConfig) {
-        if (ruleConfig.getTables().isEmpty()) {
+        if (ruleConfig.getTables().isEmpty() && 
!ruleConfig.getDefaultDataSource().isPresent()) {
             return "";
         }
-        StringBuilder result = new 
StringBuilder(SingleDistSQLConstants.LOAD_SINGLE_TABLE);
-        Iterator<String> iterator = ruleConfig.getTables().iterator();
-        while (iterator.hasNext()) {
-            String tableName = iterator.next();
-            
result.append(String.format(SingleDistSQLConstants.DATASOURCE_AND_TABLE, 
ruleConfig.getDefaultDataSource(), tableName));
-            if (iterator.hasNext()) {
-                result.append(SingleDistSQLConstants.COMMA);
-            }
+        StringBuilder result = new StringBuilder();
+        if (!ruleConfig.getTables().isEmpty()) {
+            
result.append(convertLoadTable(ruleConfig)).append(System.lineSeparator()).append(System.lineSeparator());
+        }
+        if (ruleConfig.getDefaultDataSource().isPresent()) {
+            
result.append(convertSetDefaultSingleTableStorageUnit(ruleConfig.getDefaultDataSource().get())).append(System.lineSeparator()).append(System.lineSeparator());
         }
-        
result.append(SingleDistSQLConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
         return result.toString();
     }
     
+    private String convertLoadTable(final SingleRuleConfiguration ruleConfig) {
+        return String.format(SingleDistSQLConstants.LOAD_SINGLE_TABLE, 
Joiner.on(SingleDistSQLConstants.COMMA).join(ruleConfig.getTables()));
+    }
+    
+    private String convertSetDefaultSingleTableStorageUnit(final String 
defaultStorageUnitName) {
+        return 
String.format(SingleDistSQLConstants.SET_DEFAULT_SINGLE_TABLE_STORAGE_UNIT, 
defaultStorageUnitName);
+    }
+    
     @Override
     public Class<SingleRuleConfiguration> getType() {
         return SingleRuleConfiguration.class;

Reply via email to