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

duanzhengqiang 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 12d610ec9d5 Revert "Rename actualTablePrefix to replaceTablePrefix and 
support logic table replace prefix (#18117)" (#18233)
12d610ec9d5 is described below

commit 12d610ec9d5429c8ba80d1f710bd8261fda6e099
Author: Chuxin Chen <[email protected]>
AuthorDate: Wed Jun 8 11:37:21 2022 +0800

    Revert "Rename actualTablePrefix to replaceTablePrefix and support logic 
table replace prefix (#18117)" (#18233)
    
    This reverts commit 012a8672
---
 .../rule/ShardingAutoTableRuleConfiguration.java   |  2 +-
 .../rule/ShardingTableRuleConfiguration.java       |  2 +-
 .../shardingsphere/sharding/rule/ShardingRule.java | 93 +++++++---------------
 .../shardingsphere/sharding/rule/TableRule.java    | 36 ++++-----
 .../YamlShardingAutoTableRuleConfiguration.java    |  2 +-
 .../config/rule/YamlTableRuleConfiguration.java    |  2 +-
 ...rdingAutoTableRuleConfigurationYamlSwapper.java |  4 +-
 .../ShardingTableRuleConfigurationYamlSwapper.java |  4 +-
 .../sharding/rule/TableRuleTest.java               |  4 +-
 ...gAutoTableRuleConfigurationYamlSwapperTest.java |  4 +-
 .../handler/checker/BindingTableCheckedConfig.java |  2 +
 11 files changed, 62 insertions(+), 93 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-api/src/main/java/org/apache/shardingsphere/sharding/api/config/rule/ShardingAutoTableRuleConfiguration.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-api/src/main/java/org/apache/shardingsphere/sharding/api/config/rule/ShardingAutoTableRuleConfiguration.java
index bab2507eda2..5fda87e8fb1 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-api/src/main/java/org/apache/shardingsphere/sharding/api/config/rule/ShardingAutoTableRuleConfiguration.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-api/src/main/java/org/apache/shardingsphere/sharding/api/config/rule/ShardingAutoTableRuleConfiguration.java
@@ -35,7 +35,7 @@ public final class ShardingAutoTableRuleConfiguration {
     
     private final String actualDataSources;
     
-    private String replaceTablePrefix;
+    private String actualTablePrefix;
     
     private ShardingStrategyConfiguration shardingStrategy;
     
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-api/src/main/java/org/apache/shardingsphere/sharding/api/config/rule/ShardingTableRuleConfiguration.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-api/src/main/java/org/apache/shardingsphere/sharding/api/config/rule/ShardingTableRuleConfiguration.java
index 47abfa7f558..690e8fdda4d 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-api/src/main/java/org/apache/shardingsphere/sharding/api/config/rule/ShardingTableRuleConfiguration.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-api/src/main/java/org/apache/shardingsphere/sharding/api/config/rule/ShardingTableRuleConfiguration.java
@@ -35,7 +35,7 @@ public final class ShardingTableRuleConfiguration {
     
     private final String actualDataNodes;
     
-    private String replaceTablePrefix;
+    private String actualTablePrefix;
     
     private ShardingStrategyConfiguration databaseShardingStrategy;
     
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
index 4d63d170a47..441ec5e0fc5 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
@@ -72,7 +72,6 @@ import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.TreeSet;
@@ -113,11 +112,11 @@ public final class ShardingRule implements SchemaRule, 
DataNodeContainedRule, Ta
     
     public ShardingRule(final ShardingRuleConfiguration config, final 
Collection<String> dataSourceNames) {
         this.dataSourceNames = getDataSourceNames(config.getTables(), 
config.getAutoTables(), dataSourceNames);
-        
shardingAlgorithms.putAll(createShardingAlgorithms(config.getShardingAlgorithms(),
 config.getTables(), config.getAutoTables()));
+        config.getShardingAlgorithms().forEach((key, value) -> 
shardingAlgorithms.put(key, createShardingAlgorithm(key, value, 
config.getTables(), config.getAutoTables())));
         config.getKeyGenerators().forEach((key, value) -> 
keyGenerators.put(key, KeyGenerateAlgorithmFactory.newInstance(value)));
         tableRules.putAll(createTableRules(config.getTables(), 
config.getDefaultKeyGenerateStrategy()));
         tableRules.putAll(createAutoTableRules(config.getAutoTables(), 
config.getDefaultKeyGenerateStrategy()));
-        
bindingTableRules.putAll(createBindingTableRules(config.getBindingTableGroups(),
 config.getTables(), config.getAutoTables(), tableRules));
+        
bindingTableRules.putAll(createBindingTableRules(config.getBindingTableGroups()));
         broadcastTables = createBroadcastTables(config.getBroadcastTables());
         defaultDatabaseShardingStrategyConfig = null == 
config.getDefaultDatabaseShardingStrategy() ? new 
NoneShardingStrategyConfiguration() : 
config.getDefaultDatabaseShardingStrategy();
         defaultTableShardingStrategyConfig = null == 
config.getDefaultTableShardingStrategy() ? new 
NoneShardingStrategyConfiguration() : config.getDefaultTableShardingStrategy();
@@ -126,7 +125,7 @@ public final class ShardingRule implements SchemaRule, 
DataNodeContainedRule, Ta
                 : 
keyGenerators.get(config.getDefaultKeyGenerateStrategy().getKeyGeneratorName());
         defaultShardingColumn = config.getDefaultShardingColumn();
         shardingTableDataNodes = createShardingTableDataNodes(tableRules);
-        
Preconditions.checkArgument(isValidBindingTableConfiguration(bindingTableRules, 
new BindingTableCheckedConfig(this.dataSourceNames, shardingAlgorithms,
+        
Preconditions.checkArgument(isValidBindingTableConfiguration(tableRules, new 
BindingTableCheckedConfig(this.dataSourceNames, shardingAlgorithms, 
config.getBindingTableGroups(),
                 broadcastTables, defaultDatabaseShardingStrategyConfig, 
defaultTableShardingStrategyConfig, defaultShardingColumn)),
                 "Invalid binding table configuration in 
ShardingRuleConfiguration.");
     }
@@ -137,7 +136,7 @@ public final class ShardingRule implements SchemaRule, 
DataNodeContainedRule, Ta
         keyGenerators.putAll(config.getKeyGenerators());
         tableRules.putAll(createTableRules(config.getTables(), 
config.getDefaultKeyGenerateStrategy()));
         tableRules.putAll(createAutoTableRules(config.getAutoTables(), 
config.getDefaultKeyGenerateStrategy()));
-        
bindingTableRules.putAll(createBindingTableRules(config.getBindingTableGroups(),
 config.getTables(), config.getAutoTables(), tableRules));
+        
bindingTableRules.putAll(createBindingTableRules(config.getBindingTableGroups()));
         broadcastTables = createBroadcastTables(config.getBroadcastTables());
         defaultDatabaseShardingStrategyConfig = null == 
config.getDefaultDatabaseShardingStrategy() ? new 
NoneShardingStrategyConfiguration() : 
config.getDefaultDatabaseShardingStrategy();
         defaultTableShardingStrategyConfig = null == 
config.getDefaultTableShardingStrategy() ? new 
NoneShardingStrategyConfiguration() : config.getDefaultTableShardingStrategy();
@@ -146,7 +145,7 @@ public final class ShardingRule implements SchemaRule, 
DataNodeContainedRule, Ta
                 : 
keyGenerators.get(config.getDefaultKeyGenerateStrategy().getKeyGeneratorName());
         defaultShardingColumn = config.getDefaultShardingColumn();
         shardingTableDataNodes = createShardingTableDataNodes(tableRules);
-        
Preconditions.checkArgument(isValidBindingTableConfiguration(bindingTableRules, 
new BindingTableCheckedConfig(this.dataSourceNames, shardingAlgorithms,
+        
Preconditions.checkArgument(isValidBindingTableConfiguration(tableRules, new 
BindingTableCheckedConfig(this.dataSourceNames, shardingAlgorithms, 
config.getBindingTableGroups(),
                 broadcastTables, defaultDatabaseShardingStrategyConfig, 
defaultTableShardingStrategyConfig, defaultShardingColumn)),
                 "Invalid binding table configuration in 
ShardingRuleConfiguration.");
     }
@@ -163,7 +162,6 @@ public final class ShardingRule implements SchemaRule, 
DataNodeContainedRule, Ta
         config.getShardingAlgorithms().forEach((key, value) -> 
shardingAlgorithms.put(key, ShardingAlgorithmFactory.newInstance(value)));
         tableRules.putAll(createTableRules(config.getTables(), 
config.getDefaultKeyGenerateStrategy(), allDataSourceNames));
         tableRules.putAll(createAutoTableRules(config.getAutoTables(), 
shardingAlgorithms, config.getDefaultKeyGenerateStrategy(), 
allDataSourceNames));
-        Map<String, BindingTableRule> bindingTableRules = 
createBindingTableRules(config.getBindingTableGroups(), config.getTables(), 
config.getAutoTables(), tableRules);
         Collection<String> broadcastTables = 
createBroadcastTables(config.getBroadcastTables());
         ShardingStrategyConfiguration defaultDatabaseShardingStrategyConfig = 
null == config.getDefaultDatabaseShardingStrategy()
                 ? new NoneShardingStrategyConfiguration()
@@ -171,7 +169,7 @@ public final class ShardingRule implements SchemaRule, 
DataNodeContainedRule, Ta
         ShardingStrategyConfiguration defaultTableShardingStrategyConfig = 
null == config.getDefaultTableShardingStrategy()
                 ? new NoneShardingStrategyConfiguration()
                 : config.getDefaultTableShardingStrategy();
-        return isValidBindingTableConfiguration(bindingTableRules, new 
BindingTableCheckedConfig(allDataSourceNames, shardingAlgorithms, 
broadcastTables,
+        return isValidBindingTableConfiguration(tableRules, new 
BindingTableCheckedConfig(allDataSourceNames, shardingAlgorithms, 
config.getBindingTableGroups(), broadcastTables,
                 defaultDatabaseShardingStrategyConfig, 
defaultTableShardingStrategyConfig, config.getDefaultShardingColumn()));
     }
     
@@ -253,12 +251,10 @@ public final class ShardingRule implements SchemaRule, 
DataNodeContainedRule, Ta
         return result;
     }
     
-    private Map<String, BindingTableRule> createBindingTableRules(final 
Collection<String> bindingTableGroups, final 
Collection<ShardingTableRuleConfiguration> tables,
-                                                                  final 
Collection<ShardingAutoTableRuleConfiguration> autoTables, final Map<String, 
TableRule> tableRules) {
-        Map<String, String> logicTableReplaceTablePrefixMap = 
getLogicTableReplaceTablePrefixMap(tables, autoTables);
+    private Map<String, BindingTableRule> createBindingTableRules(final 
Collection<String> bindingTableGroups) {
         Map<String, BindingTableRule> result = new LinkedHashMap<>();
         for (String each : bindingTableGroups) {
-            BindingTableRule bindingTableRule = createBindingTableRule(each, 
tableRules, logicTableReplaceTablePrefixMap);
+            BindingTableRule bindingTableRule = createBindingTableRule(each);
             for (String logicTable : bindingTableRule.getAllLogicTables()) {
                 result.put(logicTable.toLowerCase(), bindingTableRule);
             }
@@ -266,45 +262,24 @@ public final class ShardingRule implements SchemaRule, 
DataNodeContainedRule, Ta
         return result;
     }
     
-    private Map<String, String> getLogicTableReplaceTablePrefixMap(final 
Collection<ShardingTableRuleConfiguration> tables,
-                                                                   final 
Collection<ShardingAutoTableRuleConfiguration> autoTables) {
-        Map<String, String> result = new LinkedHashMap<>(tables.size() + 
autoTables.size(), 1);
-        for (ShardingTableRuleConfiguration each : tables) {
-            if (null != each.getReplaceTablePrefix()) {
-                result.put(each.getLogicTable(), each.getReplaceTablePrefix());
-            }
-        }
-        for (ShardingAutoTableRuleConfiguration each : autoTables) {
-            if (null != each.getReplaceTablePrefix()) {
-                result.put(each.getLogicTable(), each.getReplaceTablePrefix());
-            }
-        }
-        return result;
-    }
-    
-    private BindingTableRule createBindingTableRule(final String 
bindingTableGroup, final Map<String, TableRule> tableRules,
-                                                    final Map<String, String> 
logicTableReplaceTablePrefixMap) {
+    private BindingTableRule createBindingTableRule(final String 
bindingTableGroup) {
+        Map<String, TableRule> tableRules = 
Splitter.on(",").trimResults().splitToList(bindingTableGroup).stream()
+                .map(this::getTableRule).collect(Collectors.toMap(each -> 
each.getLogicTable().toLowerCase(), Function.identity(), (oldValue, 
currentValue) -> oldValue, LinkedHashMap::new));
         BindingTableRule result = new BindingTableRule();
-        for (String each : 
Splitter.on(",").trimResults().splitToList(bindingTableGroup)) {
-            String replaceTablePrefix = 
logicTableReplaceTablePrefixMap.get(each);
-            String logicTable = Strings.isNullOrEmpty(replaceTablePrefix) ? 
each : replaceTablePrefix + each;
-            TableRule tableRule = 
Optional.ofNullable(tableRules.get(logicTable.toLowerCase()))
-                    .orElseThrow(() -> new 
ShardingSphereConfigurationException("Cannot find table rule with logic table: 
'%s'", logicTable));
-            
result.getTableRules().put(tableRule.getLogicTable().toLowerCase(), tableRule);
-        }
+        result.getTableRules().putAll(tableRules);
         return result;
     }
     
-    private boolean isValidBindingTableConfiguration(final Map<String, 
BindingTableRule> bindingTableRules, final BindingTableCheckedConfig 
checkedConfig) {
-        for (BindingTableRule each : new 
HashSet<>(bindingTableRules.values())) {
-            Collection<TableRule> bindingTables = 
each.getTableRules().values();
+    private boolean isValidBindingTableConfiguration(final Map<String, 
TableRule> tableRules, final BindingTableCheckedConfig checkedConfig) {
+        for (String each : checkedConfig.getBindingTableGroups()) {
+            Collection<String> bindingTables = 
Splitter.on(",").trimResults().splitToList(each.toLowerCase());
             if (bindingTables.size() <= 1) {
                 continue;
             }
-            Iterator<TableRule> iterator = bindingTables.iterator();
-            TableRule sampleTableRule = iterator.next();
+            Iterator<String> iterator = bindingTables.iterator();
+            TableRule sampleTableRule = getTableRule(iterator.next(), 
checkedConfig.getDataSourceNames(), tableRules, 
checkedConfig.getBroadcastTables());
             while (iterator.hasNext()) {
-                TableRule tableRule = iterator.next();
+                TableRule tableRule = getTableRule(iterator.next(), 
checkedConfig.getDataSourceNames(), tableRules, 
checkedConfig.getBroadcastTables());
                 if (!isValidActualDatasourceName(sampleTableRule, tableRule) 
|| !isValidActualTableName(sampleTableRule, tableRule)) {
                     return false;
                 }
@@ -837,37 +812,29 @@ public final class ShardingRule implements SchemaRule, 
DataNodeContainedRule, Ta
         }
     }
     
-    private Map<String, ShardingAlgorithm> createShardingAlgorithms(final 
Map<String, ShardingSphereAlgorithmConfiguration> shardingAlgorithms,
-                                                                    final 
Collection<ShardingTableRuleConfiguration> tables, final 
Collection<ShardingAutoTableRuleConfiguration> autoTables) {
-        Map<String, String> algorithmReplaceTablePrefixMap = 
getAlgorithmReplaceTablePrefixMap(tables, autoTables);
-        Map<String, ShardingAlgorithm> result = new 
LinkedHashMap<>(shardingAlgorithms.size(), 1);
-        for (Entry<String, ShardingSphereAlgorithmConfiguration> entry : 
shardingAlgorithms.entrySet()) {
-            result.put(entry.getKey(), createShardingAlgorithm(entry.getKey(), 
entry.getValue(), algorithmReplaceTablePrefixMap));
-        }
-        return result;
-    }
-    
-    private ShardingAlgorithm createShardingAlgorithm(final String name, final 
ShardingSphereAlgorithmConfiguration config, final Map<String, String> 
algorithmReplaceTablePrefixMap) {
-        if (algorithmReplaceTablePrefixMap.containsKey(name)) {
+    private ShardingAlgorithm createShardingAlgorithm(final String name, final 
ShardingSphereAlgorithmConfiguration config, final 
Collection<ShardingTableRuleConfiguration> tables,
+                                                      final 
Collection<ShardingAutoTableRuleConfiguration> autoTables) {
+        Map<String, String> algorithmTablePrefixMap = 
getAlgorithmTablePrefixMap(tables, autoTables);
+        if (algorithmTablePrefixMap.containsKey(name)) {
             String algorithmExpression = 
config.getProps().getProperty(ALGORITHM_EXPRESSION_KEY);
-            String replaceTablePrefix = 
algorithmReplaceTablePrefixMap.get(name);
-            if (!Strings.isNullOrEmpty(algorithmExpression) && 
!algorithmExpression.startsWith(replaceTablePrefix)) {
-                config.getProps().setProperty(ALGORITHM_EXPRESSION_KEY, 
replaceTablePrefix + algorithmExpression);
+            String actualTablePrefix = algorithmTablePrefixMap.get(name);
+            if (!Strings.isNullOrEmpty(algorithmExpression) && 
!algorithmExpression.startsWith(actualTablePrefix)) {
+                config.getProps().setProperty(ALGORITHM_EXPRESSION_KEY, 
actualTablePrefix + algorithmExpression);
             }
         }
         return ShardingAlgorithmFactory.newInstance(config);
     }
     
-    private Map<String, String> getAlgorithmReplaceTablePrefixMap(final 
Collection<ShardingTableRuleConfiguration> tables, final 
Collection<ShardingAutoTableRuleConfiguration> autoTables) {
+    private Map<String, String> getAlgorithmTablePrefixMap(final 
Collection<ShardingTableRuleConfiguration> tables, final 
Collection<ShardingAutoTableRuleConfiguration> autoTables) {
         Map<String, String> result = new LinkedHashMap<>(tables.size() + 
autoTables.size(), 1);
         for (ShardingTableRuleConfiguration each : tables) {
-            if (null != each.getReplaceTablePrefix() && null != 
each.getTableShardingStrategy()) {
-                
result.put(each.getTableShardingStrategy().getShardingAlgorithmName(), 
each.getReplaceTablePrefix());
+            if (null != each.getActualTablePrefix() && null != 
each.getTableShardingStrategy()) {
+                
result.put(each.getTableShardingStrategy().getShardingAlgorithmName(), 
each.getActualTablePrefix());
             }
         }
         for (ShardingAutoTableRuleConfiguration each : autoTables) {
-            if (null != each.getReplaceTablePrefix() && null != 
each.getShardingStrategy()) {
-                
result.put(each.getShardingStrategy().getShardingAlgorithmName(), 
each.getReplaceTablePrefix());
+            if (null != each.getActualTablePrefix() && null != 
each.getShardingStrategy()) {
+                
result.put(each.getShardingStrategy().getShardingAlgorithmName(), 
each.getActualTablePrefix());
             }
         }
         return result;
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/TableRule.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/TableRule.java
index 3834e789d9d..6a17a78c962 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/TableRule.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/TableRule.java
@@ -53,7 +53,7 @@ import java.util.stream.Collectors;
  * Table rule.
  */
 @Getter
-@ToString(exclude = {"dataNodeIndexMap", "actualTables", "replaceTablePrefix", 
"actualDatasourceNames", "datasourceToTablesMap", "dataSourceDataNode", 
"tableDataNode"})
+@ToString(exclude = {"dataNodeIndexMap", "actualTables", "actualTablePrefix", 
"actualDatasourceNames", "datasourceToTablesMap", "dataSourceDataNode", 
"tableDataNode"})
 public final class TableRule {
     
     private static final Pattern DATA_NODE_SUFFIX_PATTERN = 
Pattern.compile("\\d+$");
@@ -64,7 +64,7 @@ public final class TableRule {
     
     private final List<DataNode> actualDataNodes;
     
-    private final String replaceTablePrefix;
+    private final String actualTablePrefix;
     
     @Getter(AccessLevel.NONE)
     private final Set<String> actualTables;
@@ -92,7 +92,7 @@ public final class TableRule {
     public TableRule(final Collection<String> dataSourceNames, final String 
logicTableName) {
         logicTable = logicTableName;
         dataNodeIndexMap = new HashMap<>(dataSourceNames.size(), 1);
-        replaceTablePrefix = null;
+        actualTablePrefix = null;
         actualDataNodes = generateDataNodes(logicTableName, dataSourceNames, 
null);
         actualTables = getActualTables();
         databaseShardingStrategyConfig = null;
@@ -104,12 +104,12 @@ public final class TableRule {
     }
     
     public TableRule(final ShardingTableRuleConfiguration tableRuleConfig, 
final Collection<String> dataSourceNames, final String 
defaultGenerateKeyColumn) {
-        replaceTablePrefix = tableRuleConfig.getReplaceTablePrefix();
-        logicTable = Strings.isNullOrEmpty(replaceTablePrefix) ? 
tableRuleConfig.getLogicTable() : replaceTablePrefix + 
tableRuleConfig.getLogicTable();
+        logicTable = tableRuleConfig.getLogicTable();
         List<String> dataNodes = new 
InlineExpressionParser(tableRuleConfig.getActualDataNodes()).splitAndEvaluate();
         dataNodeIndexMap = new HashMap<>(dataNodes.size(), 1);
-        actualDataNodes = isEmptyDataNodes(dataNodes) ? 
generateDataNodes(tableRuleConfig.getLogicTable(), dataSourceNames, 
replaceTablePrefix)
-                : generateDataNodes(dataNodes, dataSourceNames, 
replaceTablePrefix);
+        actualTablePrefix = tableRuleConfig.getActualTablePrefix();
+        actualDataNodes = isEmptyDataNodes(dataNodes) ? 
generateDataNodes(tableRuleConfig.getLogicTable(), dataSourceNames, 
actualTablePrefix)
+                : generateDataNodes(dataNodes, dataSourceNames, 
actualTablePrefix);
         actualTables = getActualTables();
         databaseShardingStrategyConfig = 
tableRuleConfig.getDatabaseShardingStrategy();
         tableShardingStrategyConfig = 
tableRuleConfig.getTableShardingStrategy();
@@ -123,14 +123,14 @@ public final class TableRule {
     
     public TableRule(final ShardingAutoTableRuleConfiguration tableRuleConfig, 
final Collection<String> dataSourceNames,
                      final ShardingAutoTableAlgorithm 
shardingAutoTableAlgorithm, final String defaultGenerateKeyColumn) {
-        replaceTablePrefix = tableRuleConfig.getReplaceTablePrefix();
-        logicTable = Strings.isNullOrEmpty(replaceTablePrefix) ? 
tableRuleConfig.getLogicTable() : replaceTablePrefix + 
tableRuleConfig.getLogicTable();
+        logicTable = tableRuleConfig.getLogicTable();
         databaseShardingStrategyConfig = new 
NoneShardingStrategyConfiguration();
         tableShardingStrategyConfig = tableRuleConfig.getShardingStrategy();
         List<String> dataNodes = getDataNodes(tableRuleConfig, 
shardingAutoTableAlgorithm, dataSourceNames);
         dataNodeIndexMap = new HashMap<>(dataNodes.size(), 1);
-        actualDataNodes = isEmptyDataNodes(dataNodes) ? 
generateDataNodes(tableRuleConfig.getLogicTable(), dataSourceNames, 
replaceTablePrefix)
-                : generateDataNodes(dataNodes, dataSourceNames, 
replaceTablePrefix);
+        actualTablePrefix = tableRuleConfig.getActualTablePrefix();
+        actualDataNodes = isEmptyDataNodes(dataNodes) ? 
generateDataNodes(tableRuleConfig.getLogicTable(), dataSourceNames, 
actualTablePrefix)
+                : generateDataNodes(dataNodes, dataSourceNames, 
actualTablePrefix);
         actualTables = getActualTables();
         KeyGenerateStrategyConfiguration keyGeneratorConfig = 
tableRuleConfig.getKeyGenerateStrategy();
         generateKeyColumn = null != keyGeneratorConfig && 
!Strings.isNullOrEmpty(keyGeneratorConfig.getColumn()) ? 
keyGeneratorConfig.getColumn() : defaultGenerateKeyColumn;
@@ -185,11 +185,11 @@ public final class TableRule {
         return null == dataNodes || dataNodes.isEmpty();
     }
     
-    private List<DataNode> generateDataNodes(final String logicTable, final 
Collection<String> dataSourceNames, final String replaceTablePrefix) {
+    private List<DataNode> generateDataNodes(final String logicTable, final 
Collection<String> dataSourceNames, final String actualTablePrefix) {
         List<DataNode> result = new LinkedList<>();
         int index = 0;
         for (String each : dataSourceNames) {
-            String actualTable = Strings.isNullOrEmpty(replaceTablePrefix) ? 
logicTable : replaceTablePrefix + logicTable;
+            String actualTable = Strings.isNullOrEmpty(actualTablePrefix) ? 
logicTable : actualTablePrefix + logicTable;
             DataNode dataNode = new DataNode(each, actualTable);
             result.add(dataNode);
             dataNodeIndexMap.put(dataNode, index);
@@ -200,11 +200,11 @@ public final class TableRule {
         return result;
     }
     
-    private List<DataNode> generateDataNodes(final List<String> 
actualDataNodes, final Collection<String> dataSourceNames, final String 
replaceTablePrefix) {
+    private List<DataNode> generateDataNodes(final List<String> 
actualDataNodes, final Collection<String> dataSourceNames, final String 
actualTablePrefix) {
         List<DataNode> result = new LinkedList<>();
         int index = 0;
         for (String each : actualDataNodes) {
-            DataNode dataNode = generateDataNode(each, replaceTablePrefix);
+            DataNode dataNode = generateDataNode(each, actualTablePrefix);
             if (!dataSourceNames.contains(dataNode.getDataSourceName())) {
                 throw new ShardingSphereException("Cannot find data source in 
sharding rule, invalid actual data node is: '%s'", each);
             }
@@ -217,12 +217,12 @@ public final class TableRule {
         return result;
     }
     
-    private DataNode generateDataNode(final String dataNode, final String 
replaceTablePrefix) {
+    private DataNode generateDataNode(final String dataNode, final String 
actualTablePrefix) {
         DataNode result = new DataNode(dataNode);
-        if (Strings.isNullOrEmpty(replaceTablePrefix) || 
result.getTableName().startsWith(replaceTablePrefix)) {
+        if (Strings.isNullOrEmpty(actualTablePrefix)) {
             return result;
         }
-        return new DataNode(result.getDataSourceName(), replaceTablePrefix + 
result.getTableName());
+        return new DataNode(result.getDataSourceName(), actualTablePrefix + 
result.getTableName());
     }
     
     /**
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/config/rule/YamlShardingAutoTableRuleConfiguration.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/config/rule/YamlShardingAutoTableRuleConfiguration.java
index 35c81e9774c..14d8ac3f5f4 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/config/rule/YamlShardingAutoTableRuleConfiguration.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/config/rule/YamlShardingAutoTableRuleConfiguration.java
@@ -34,7 +34,7 @@ public final class YamlShardingAutoTableRuleConfiguration 
implements YamlConfigu
     
     private String actualDataSources;
     
-    private String replaceTablePrefix;
+    private String actualTablePrefix;
     
     private YamlShardingStrategyConfiguration shardingStrategy;
     
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/config/rule/YamlTableRuleConfiguration.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/config/rule/YamlTableRuleConfiguration.java
index b3f5210d3ec..abeb4ac9a6d 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/config/rule/YamlTableRuleConfiguration.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/config/rule/YamlTableRuleConfiguration.java
@@ -34,7 +34,7 @@ public final class YamlTableRuleConfiguration implements 
YamlConfiguration {
     
     private String actualDataNodes;
     
-    private String replaceTablePrefix;
+    private String actualTablePrefix;
     
     private YamlShardingStrategyConfiguration databaseStrategy;
     
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/ShardingAutoTableRuleConfigurationYamlSwapper.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/ShardingAutoTableRuleConfigurationYamlSwapper.java
index 934377d9575..a6a903cc064 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/ShardingAutoTableRuleConfigurationYamlSwapper.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/ShardingAutoTableRuleConfigurationYamlSwapper.java
@@ -38,7 +38,7 @@ public final class 
ShardingAutoTableRuleConfigurationYamlSwapper implements Yaml
         YamlShardingAutoTableRuleConfiguration result = new 
YamlShardingAutoTableRuleConfiguration();
         result.setLogicTable(data.getLogicTable());
         result.setActualDataSources(data.getActualDataSources());
-        result.setReplaceTablePrefix(data.getReplaceTablePrefix());
+        result.setActualTablePrefix(data.getActualTablePrefix());
         if (null != data.getShardingStrategy()) {
             
result.setShardingStrategy(shardingStrategyYamlSwapper.swapToYamlConfiguration(data.getShardingStrategy()));
         }
@@ -52,7 +52,7 @@ public final class 
ShardingAutoTableRuleConfigurationYamlSwapper implements Yaml
     public ShardingAutoTableRuleConfiguration swapToObject(final 
YamlShardingAutoTableRuleConfiguration yamlConfig) {
         Preconditions.checkNotNull(yamlConfig.getLogicTable(), "Logic table 
cannot be null.");
         ShardingAutoTableRuleConfiguration result = new 
ShardingAutoTableRuleConfiguration(yamlConfig.getLogicTable(), 
yamlConfig.getActualDataSources());
-        result.setReplaceTablePrefix(yamlConfig.getReplaceTablePrefix());
+        result.setActualTablePrefix(yamlConfig.getActualTablePrefix());
         if (null != yamlConfig.getShardingStrategy()) {
             
result.setShardingStrategy(shardingStrategyYamlSwapper.swapToObject(yamlConfig.getShardingStrategy()));
         }
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/ShardingTableRuleConfigurationYamlSwapper.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/ShardingTableRuleConfigurationYamlSwapper.java
index 1bed4503944..bbc7731888e 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/ShardingTableRuleConfigurationYamlSwapper.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/ShardingTableRuleConfigurationYamlSwapper.java
@@ -38,7 +38,7 @@ public final class ShardingTableRuleConfigurationYamlSwapper 
implements YamlConf
         YamlTableRuleConfiguration result = new YamlTableRuleConfiguration();
         result.setLogicTable(data.getLogicTable());
         result.setActualDataNodes(data.getActualDataNodes());
-        result.setReplaceTablePrefix(data.getReplaceTablePrefix());
+        result.setActualTablePrefix(data.getActualTablePrefix());
         if (null != data.getDatabaseShardingStrategy()) {
             
result.setDatabaseStrategy(shardingStrategyYamlSwapper.swapToYamlConfiguration(data.getDatabaseShardingStrategy()));
         }
@@ -55,7 +55,7 @@ public final class ShardingTableRuleConfigurationYamlSwapper 
implements YamlConf
     public ShardingTableRuleConfiguration swapToObject(final 
YamlTableRuleConfiguration yamlConfig) {
         Preconditions.checkNotNull(yamlConfig.getLogicTable(), "Logic table 
cannot be null.");
         ShardingTableRuleConfiguration result = new 
ShardingTableRuleConfiguration(yamlConfig.getLogicTable(), 
yamlConfig.getActualDataNodes());
-        result.setReplaceTablePrefix(yamlConfig.getReplaceTablePrefix());
+        result.setActualTablePrefix(yamlConfig.getActualTablePrefix());
         if (null != yamlConfig.getDatabaseStrategy()) {
             
result.setDatabaseShardingStrategy(shardingStrategyYamlSwapper.swapToObject(yamlConfig.getDatabaseStrategy()));
         }
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/TableRuleTest.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/TableRuleTest.java
index ea71c11e380..6eace0e0b1a 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/TableRuleTest.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/TableRuleTest.java
@@ -182,7 +182,7 @@ public final class TableRuleTest {
     @Test
     public void assertDatNodeGroupsWhenShardingTableConfigActualTablePrefix() {
         ShardingTableRuleConfiguration shardingTableRuleConfig = new 
ShardingTableRuleConfiguration("t_order", "ds_${0..1}.t_order_${0..1}");
-        shardingTableRuleConfig.setReplaceTablePrefix("tmp_");
+        shardingTableRuleConfig.setActualTablePrefix("tmp_");
         TableRule tableRule = new TableRule(shardingTableRuleConfig, 
Arrays.asList("ds_0", "ds_1"), "order_id");
         Map<String, List<DataNode>> actual = tableRule.getDataNodeGroups();
         assertThat(actual.size(), is(2));
@@ -195,7 +195,7 @@ public final class TableRuleTest {
     @Test
     public void 
assertDatNodeGroupsWhenShardingAutoTableConfigActualTablePrefix() {
         ShardingAutoTableRuleConfiguration shardingTableRuleConfig = new 
ShardingAutoTableRuleConfiguration("t_order", "ds_${0..1}");
-        shardingTableRuleConfig.setReplaceTablePrefix("tmp_");
+        shardingTableRuleConfig.setActualTablePrefix("tmp_");
         shardingTableRuleConfig.setShardingStrategy(new 
StandardShardingStrategyConfiguration("order_id", "mod"));
         ModShardingAlgorithm modShardingAlgorithm = 
createModShardingAlgorithm();
         TableRule tableRule = new TableRule(shardingTableRuleConfig, 
Arrays.asList("ds_0", "ds_1"), modShardingAlgorithm, "order_id");
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/swapper/rule/ShardingAutoTableRuleConfigurationYamlSwapperTest.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/swapper/rule/ShardingAutoTableRuleConfigurationYamlSwapperTest.java
index c92a0576054..6962c95eb46 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/swapper/rule/ShardingAutoTableRuleConfigurationYamlSwapperTest.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/swapper/rule/ShardingAutoTableRuleConfigurationYamlSwapperTest.java
@@ -80,13 +80,13 @@ public final class 
ShardingAutoTableRuleConfigurationYamlSwapperTest {
     @Test
     public void assertSwapToYamlWithMaxProperties() {
         ShardingAutoTableRuleConfiguration shardingTableRuleConfig = new 
ShardingAutoTableRuleConfiguration("tbl", "ds0,ds1");
-        shardingTableRuleConfig.setReplaceTablePrefix("tmp_");
+        shardingTableRuleConfig.setActualTablePrefix("tmp_");
         
shardingTableRuleConfig.setShardingStrategy(mock(StandardShardingStrategyConfiguration.class));
         
shardingTableRuleConfig.setKeyGenerateStrategy(mock(KeyGenerateStrategyConfiguration.class));
         YamlShardingAutoTableRuleConfiguration actual = 
tableYamlSwapper.swapToYamlConfiguration(shardingTableRuleConfig);
         assertThat(actual.getLogicTable(), is("tbl"));
         assertThat(actual.getActualDataSources(), is("ds0,ds1"));
-        assertThat(actual.getReplaceTablePrefix(), is("tmp_"));
+        assertThat(actual.getActualTablePrefix(), is("tmp_"));
         assertNotNull(actual.getShardingStrategy());
         assertNotNull(actual.getKeyGenerateStrategy());
     }
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/checker/BindingTableCheckedConfig.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/checker/BindingTableCheckedConfig.java
index 6db0ddc3abf..2e909236a2d 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/checker/BindingTableCheckedConfig.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/checker/BindingTableCheckedConfig.java
@@ -36,6 +36,8 @@ public final class BindingTableCheckedConfig {
     
     private final Map<String, ShardingAlgorithm> shardingAlgorithms;
     
+    private final Collection<String> bindingTableGroups;
+    
     private final Collection<String> broadcastTables;
     
     private final ShardingStrategyConfiguration 
defaultDatabaseShardingStrategyConfig;

Reply via email to