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;