You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2022/06/08 03:37:27 UTC
[shardingsphere] branch master updated: Revert "Rename actualTablePrefix to replaceTablePrefix and support logic table replace prefix (#18117)" (#18233)
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 <ch...@qq.com>
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;