This is an automated email from the ASF dual-hosted git repository.
tuichenchuxin 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 012a8672932 Rename actualTablePrefix to replaceTablePrefix and support
logic table replace prefix (#18117)
012a8672932 is described below
commit 012a86729329e94d793f1bffb6d3ee3bf98ba663
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Wed Jun 1 14:22:22 2022 +0800
Rename actualTablePrefix to replaceTablePrefix and support logic table
replace prefix (#18117)
---
.../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, 93 insertions(+), 62 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 5fda87e8fb1..bab2507eda2 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 actualTablePrefix;
+ private String replaceTablePrefix;
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 690e8fdda4d..47abfa7f558 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 actualTablePrefix;
+ private String replaceTablePrefix;
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 fcc0f4a26e4..cdf6aa2d37c 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,6 +72,7 @@ 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;
@@ -112,11 +113,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);
- config.getShardingAlgorithms().forEach((key, value) ->
shardingAlgorithms.put(key, createShardingAlgorithm(key, value,
config.getTables(), config.getAutoTables())));
+
shardingAlgorithms.putAll(createShardingAlgorithms(config.getShardingAlgorithms(),
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()));
+
bindingTableRules.putAll(createBindingTableRules(config.getBindingTableGroups(),
config.getTables(), config.getAutoTables(), tableRules));
broadcastTables = createBroadcastTables(config.getBroadcastTables());
defaultDatabaseShardingStrategyConfig = null ==
config.getDefaultDatabaseShardingStrategy() ? new
NoneShardingStrategyConfiguration() :
config.getDefaultDatabaseShardingStrategy();
defaultTableShardingStrategyConfig = null ==
config.getDefaultTableShardingStrategy() ? new
NoneShardingStrategyConfiguration() : config.getDefaultTableShardingStrategy();
@@ -125,7 +126,7 @@ public final class ShardingRule implements SchemaRule,
DataNodeContainedRule, Ta
:
keyGenerators.get(config.getDefaultKeyGenerateStrategy().getKeyGeneratorName());
defaultShardingColumn = config.getDefaultShardingColumn();
shardingTableDataNodes = createShardingTableDataNodes(tableRules);
-
Preconditions.checkArgument(isValidBindingTableConfiguration(tableRules, new
BindingTableCheckedConfig(this.dataSourceNames, shardingAlgorithms,
config.getBindingTableGroups(),
+
Preconditions.checkArgument(isValidBindingTableConfiguration(bindingTableRules,
new BindingTableCheckedConfig(this.dataSourceNames, shardingAlgorithms,
broadcastTables, defaultDatabaseShardingStrategyConfig,
defaultTableShardingStrategyConfig, defaultShardingColumn)),
"Invalid binding table configuration in
ShardingRuleConfiguration.");
}
@@ -136,7 +137,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()));
+
bindingTableRules.putAll(createBindingTableRules(config.getBindingTableGroups(),
config.getTables(), config.getAutoTables(), tableRules));
broadcastTables = createBroadcastTables(config.getBroadcastTables());
defaultDatabaseShardingStrategyConfig = null ==
config.getDefaultDatabaseShardingStrategy() ? new
NoneShardingStrategyConfiguration() :
config.getDefaultDatabaseShardingStrategy();
defaultTableShardingStrategyConfig = null ==
config.getDefaultTableShardingStrategy() ? new
NoneShardingStrategyConfiguration() : config.getDefaultTableShardingStrategy();
@@ -145,7 +146,7 @@ public final class ShardingRule implements SchemaRule,
DataNodeContainedRule, Ta
:
keyGenerators.get(config.getDefaultKeyGenerateStrategy().getKeyGeneratorName());
defaultShardingColumn = config.getDefaultShardingColumn();
shardingTableDataNodes = createShardingTableDataNodes(tableRules);
-
Preconditions.checkArgument(isValidBindingTableConfiguration(tableRules, new
BindingTableCheckedConfig(this.dataSourceNames, shardingAlgorithms,
config.getBindingTableGroups(),
+
Preconditions.checkArgument(isValidBindingTableConfiguration(bindingTableRules,
new BindingTableCheckedConfig(this.dataSourceNames, shardingAlgorithms,
broadcastTables, defaultDatabaseShardingStrategyConfig,
defaultTableShardingStrategyConfig, defaultShardingColumn)),
"Invalid binding table configuration in
ShardingRuleConfiguration.");
}
@@ -162,6 +163,7 @@ 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()
@@ -169,7 +171,7 @@ public final class ShardingRule implements SchemaRule,
DataNodeContainedRule, Ta
ShardingStrategyConfiguration defaultTableShardingStrategyConfig =
null == config.getDefaultTableShardingStrategy()
? new NoneShardingStrategyConfiguration()
: config.getDefaultTableShardingStrategy();
- return isValidBindingTableConfiguration(tableRules, new
BindingTableCheckedConfig(allDataSourceNames, shardingAlgorithms,
config.getBindingTableGroups(), broadcastTables,
+ return isValidBindingTableConfiguration(bindingTableRules, new
BindingTableCheckedConfig(allDataSourceNames, shardingAlgorithms,
broadcastTables,
defaultDatabaseShardingStrategyConfig,
defaultTableShardingStrategyConfig, config.getDefaultShardingColumn()));
}
@@ -251,10 +253,12 @@ public final class ShardingRule implements SchemaRule,
DataNodeContainedRule, Ta
return result;
}
- private Map<String, BindingTableRule> createBindingTableRules(final
Collection<String> bindingTableGroups) {
+ 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);
Map<String, BindingTableRule> result = new LinkedHashMap<>();
for (String each : bindingTableGroups) {
- BindingTableRule bindingTableRule = createBindingTableRule(each);
+ BindingTableRule bindingTableRule = createBindingTableRule(each,
tableRules, logicTableReplaceTablePrefixMap);
for (String logicTable : bindingTableRule.getAllLogicTables()) {
result.put(logicTable.toLowerCase(), bindingTableRule);
}
@@ -262,24 +266,45 @@ public final class ShardingRule implements SchemaRule,
DataNodeContainedRule, Ta
return result;
}
- 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));
+ 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) {
BindingTableRule result = new BindingTableRule();
- result.getTableRules().putAll(tableRules);
+ 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);
+ }
return result;
}
- 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());
+ private boolean isValidBindingTableConfiguration(final Map<String,
BindingTableRule> bindingTableRules, final BindingTableCheckedConfig
checkedConfig) {
+ for (BindingTableRule each : new
HashSet<>(bindingTableRules.values())) {
+ Collection<TableRule> bindingTables =
each.getTableRules().values();
if (bindingTables.size() <= 1) {
continue;
}
- Iterator<String> iterator = bindingTables.iterator();
- TableRule sampleTableRule = getTableRule(iterator.next(),
checkedConfig.getDataSourceNames(), tableRules,
checkedConfig.getBroadcastTables());
+ Iterator<TableRule> iterator = bindingTables.iterator();
+ TableRule sampleTableRule = iterator.next();
while (iterator.hasNext()) {
- TableRule tableRule = getTableRule(iterator.next(),
checkedConfig.getDataSourceNames(), tableRules,
checkedConfig.getBroadcastTables());
+ TableRule tableRule = iterator.next();
if (!isValidActualDatasourceName(sampleTableRule, tableRule)
|| !isValidActualTableName(sampleTableRule, tableRule)) {
return false;
}
@@ -812,29 +837,37 @@ public final class ShardingRule implements SchemaRule,
DataNodeContainedRule, Ta
}
}
- 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)) {
+ 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)) {
String algorithmExpression =
config.getProps().getProperty(ALGORITHM_EXPRESSION_KEY);
- String actualTablePrefix = algorithmTablePrefixMap.get(name);
- if (!Strings.isNullOrEmpty(algorithmExpression) &&
!algorithmExpression.startsWith(actualTablePrefix)) {
- config.getProps().setProperty(ALGORITHM_EXPRESSION_KEY,
actualTablePrefix + algorithmExpression);
+ String replaceTablePrefix =
algorithmReplaceTablePrefixMap.get(name);
+ if (!Strings.isNullOrEmpty(algorithmExpression) &&
!algorithmExpression.startsWith(replaceTablePrefix)) {
+ config.getProps().setProperty(ALGORITHM_EXPRESSION_KEY,
replaceTablePrefix + algorithmExpression);
}
}
return ShardingAlgorithmFactory.newInstance(config);
}
- private Map<String, String> getAlgorithmTablePrefixMap(final
Collection<ShardingTableRuleConfiguration> tables, final
Collection<ShardingAutoTableRuleConfiguration> autoTables) {
+ private Map<String, String> getAlgorithmReplaceTablePrefixMap(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.getActualTablePrefix() && null !=
each.getTableShardingStrategy()) {
-
result.put(each.getTableShardingStrategy().getShardingAlgorithmName(),
each.getActualTablePrefix());
+ if (null != each.getReplaceTablePrefix() && null !=
each.getTableShardingStrategy()) {
+
result.put(each.getTableShardingStrategy().getShardingAlgorithmName(),
each.getReplaceTablePrefix());
}
}
for (ShardingAutoTableRuleConfiguration each : autoTables) {
- if (null != each.getActualTablePrefix() && null !=
each.getShardingStrategy()) {
-
result.put(each.getShardingStrategy().getShardingAlgorithmName(),
each.getActualTablePrefix());
+ if (null != each.getReplaceTablePrefix() && null !=
each.getShardingStrategy()) {
+
result.put(each.getShardingStrategy().getShardingAlgorithmName(),
each.getReplaceTablePrefix());
}
}
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 6a17a78c962..3834e789d9d 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", "actualTablePrefix",
"actualDatasourceNames", "datasourceToTablesMap", "dataSourceDataNode",
"tableDataNode"})
+@ToString(exclude = {"dataNodeIndexMap", "actualTables", "replaceTablePrefix",
"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 actualTablePrefix;
+ private final String replaceTablePrefix;
@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);
- actualTablePrefix = null;
+ replaceTablePrefix = 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) {
- logicTable = tableRuleConfig.getLogicTable();
+ replaceTablePrefix = tableRuleConfig.getReplaceTablePrefix();
+ logicTable = Strings.isNullOrEmpty(replaceTablePrefix) ?
tableRuleConfig.getLogicTable() : replaceTablePrefix +
tableRuleConfig.getLogicTable();
List<String> dataNodes = new
InlineExpressionParser(tableRuleConfig.getActualDataNodes()).splitAndEvaluate();
dataNodeIndexMap = new HashMap<>(dataNodes.size(), 1);
- actualTablePrefix = tableRuleConfig.getActualTablePrefix();
- actualDataNodes = isEmptyDataNodes(dataNodes) ?
generateDataNodes(tableRuleConfig.getLogicTable(), dataSourceNames,
actualTablePrefix)
- : generateDataNodes(dataNodes, dataSourceNames,
actualTablePrefix);
+ actualDataNodes = isEmptyDataNodes(dataNodes) ?
generateDataNodes(tableRuleConfig.getLogicTable(), dataSourceNames,
replaceTablePrefix)
+ : generateDataNodes(dataNodes, dataSourceNames,
replaceTablePrefix);
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) {
- logicTable = tableRuleConfig.getLogicTable();
+ replaceTablePrefix = tableRuleConfig.getReplaceTablePrefix();
+ logicTable = Strings.isNullOrEmpty(replaceTablePrefix) ?
tableRuleConfig.getLogicTable() : replaceTablePrefix +
tableRuleConfig.getLogicTable();
databaseShardingStrategyConfig = new
NoneShardingStrategyConfiguration();
tableShardingStrategyConfig = tableRuleConfig.getShardingStrategy();
List<String> dataNodes = getDataNodes(tableRuleConfig,
shardingAutoTableAlgorithm, dataSourceNames);
dataNodeIndexMap = new HashMap<>(dataNodes.size(), 1);
- actualTablePrefix = tableRuleConfig.getActualTablePrefix();
- actualDataNodes = isEmptyDataNodes(dataNodes) ?
generateDataNodes(tableRuleConfig.getLogicTable(), dataSourceNames,
actualTablePrefix)
- : generateDataNodes(dataNodes, dataSourceNames,
actualTablePrefix);
+ actualDataNodes = isEmptyDataNodes(dataNodes) ?
generateDataNodes(tableRuleConfig.getLogicTable(), dataSourceNames,
replaceTablePrefix)
+ : generateDataNodes(dataNodes, dataSourceNames,
replaceTablePrefix);
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 actualTablePrefix) {
+ private List<DataNode> generateDataNodes(final String logicTable, final
Collection<String> dataSourceNames, final String replaceTablePrefix) {
List<DataNode> result = new LinkedList<>();
int index = 0;
for (String each : dataSourceNames) {
- String actualTable = Strings.isNullOrEmpty(actualTablePrefix) ?
logicTable : actualTablePrefix + logicTable;
+ String actualTable = Strings.isNullOrEmpty(replaceTablePrefix) ?
logicTable : replaceTablePrefix + 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
actualTablePrefix) {
+ private List<DataNode> generateDataNodes(final List<String>
actualDataNodes, final Collection<String> dataSourceNames, final String
replaceTablePrefix) {
List<DataNode> result = new LinkedList<>();
int index = 0;
for (String each : actualDataNodes) {
- DataNode dataNode = generateDataNode(each, actualTablePrefix);
+ DataNode dataNode = generateDataNode(each, replaceTablePrefix);
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
actualTablePrefix) {
+ private DataNode generateDataNode(final String dataNode, final String
replaceTablePrefix) {
DataNode result = new DataNode(dataNode);
- if (Strings.isNullOrEmpty(actualTablePrefix)) {
+ if (Strings.isNullOrEmpty(replaceTablePrefix) ||
result.getTableName().startsWith(replaceTablePrefix)) {
return result;
}
- return new DataNode(result.getDataSourceName(), actualTablePrefix +
result.getTableName());
+ return new DataNode(result.getDataSourceName(), replaceTablePrefix +
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 14d8ac3f5f4..35c81e9774c 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 actualTablePrefix;
+ private String replaceTablePrefix;
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 abeb4ac9a6d..b3f5210d3ec 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 actualTablePrefix;
+ private String replaceTablePrefix;
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 a6a903cc064..934377d9575 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.setActualTablePrefix(data.getActualTablePrefix());
+ result.setReplaceTablePrefix(data.getReplaceTablePrefix());
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.setActualTablePrefix(yamlConfig.getActualTablePrefix());
+ result.setReplaceTablePrefix(yamlConfig.getReplaceTablePrefix());
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 bbc7731888e..1bed4503944 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.setActualTablePrefix(data.getActualTablePrefix());
+ result.setReplaceTablePrefix(data.getReplaceTablePrefix());
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.setActualTablePrefix(yamlConfig.getActualTablePrefix());
+ result.setReplaceTablePrefix(yamlConfig.getReplaceTablePrefix());
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 6eace0e0b1a..ea71c11e380 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.setActualTablePrefix("tmp_");
+ shardingTableRuleConfig.setReplaceTablePrefix("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.setActualTablePrefix("tmp_");
+ shardingTableRuleConfig.setReplaceTablePrefix("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 6962c95eb46..c92a0576054 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.setActualTablePrefix("tmp_");
+ shardingTableRuleConfig.setReplaceTablePrefix("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.getActualTablePrefix(), is("tmp_"));
+ assertThat(actual.getReplaceTablePrefix(), 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 2e909236a2d..6db0ddc3abf 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,8 +36,6 @@ public final class BindingTableCheckedConfig {
private final Map<String, ShardingAlgorithm> shardingAlgorithms;
- private final Collection<String> bindingTableGroups;
-
private final Collection<String> broadcastTables;
private final ShardingStrategyConfiguration
defaultDatabaseShardingStrategyConfig;