This is an automated email from the ASF dual-hosted git repository.
jianglongtao 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 77bba859501 Fix DROP SHARDING TABLE RULE (#23934)
77bba859501 is described below
commit 77bba85950122a3c47400458d0c6569699dbf3d4
Author: ChenJiaHao <[email protected]>
AuthorDate: Thu Feb 2 18:04:59 2023 +0800
Fix DROP SHARDING TABLE RULE (#23934)
* Fix DROP SHARDING TABLE RULE
* Improve DROP SHARDING TABLE RULE test case
* Fix code style
---
.../update/AbstractDropShardingRuleUpdater.java | 13 +++++++++----
.../DropShardingTableRuleStatementUpdater.java | 20 +++++++++++++-------
.../DropShardingTableRuleStatementUpdaterTest.java | 17 +++++++++++++----
3 files changed, 35 insertions(+), 15 deletions(-)
diff --git
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AbstractDropShardingRuleUpdater.java
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AbstractDropShardingRuleUpdater.java
index 5322c340248..e26e080eab9 100644
---
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AbstractDropShardingRuleUpdater.java
+++
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AbstractDropShardingRuleUpdater.java
@@ -38,13 +38,18 @@ public abstract class AbstractDropShardingRuleUpdater {
public void dropUnusedAlgorithm(final ShardingRuleConfiguration
currentRuleConfig) {
Collection<String> inUsedAlgorithms =
currentRuleConfig.getTables().stream().map(each ->
Arrays.asList(each.getTableShardingStrategy(),
each.getDatabaseShardingStrategy()))
.flatMap(Collection::stream).filter(Objects::nonNull).map(ShardingStrategyConfiguration::getShardingAlgorithmName).collect(Collectors.toSet());
-
inUsedAlgorithms.addAll(currentRuleConfig.getAutoTables().stream().map(each ->
each.getShardingStrategy().getShardingAlgorithmName()).collect(Collectors.toSet()));
- if (null != currentRuleConfig.getDefaultTableShardingStrategy()) {
-
inUsedAlgorithms.add(currentRuleConfig.getDefaultTableShardingStrategy().getShardingAlgorithmName());
- }
+
inUsedAlgorithms.addAll(currentRuleConfig.getTables().stream().filter(each ->
Objects.nonNull(each.getDatabaseShardingStrategy()))
+ .map(each ->
each.getDatabaseShardingStrategy().getShardingAlgorithmName()).collect(Collectors.toSet()));
+
inUsedAlgorithms.addAll(currentRuleConfig.getTables().stream().filter(each ->
Objects.nonNull(each.getTableShardingStrategy()))
+ .map(each ->
each.getTableShardingStrategy().getShardingAlgorithmName()).collect(Collectors.toSet()));
+
inUsedAlgorithms.addAll(currentRuleConfig.getAutoTables().stream().filter(each
-> Objects.nonNull(each.getShardingStrategy()))
+ .map(each ->
each.getShardingStrategy().getShardingAlgorithmName()).collect(Collectors.toSet()));
if (null != currentRuleConfig.getDefaultDatabaseShardingStrategy()) {
inUsedAlgorithms.add(currentRuleConfig.getDefaultDatabaseShardingStrategy().getShardingAlgorithmName());
}
+ if (null != currentRuleConfig.getDefaultTableShardingStrategy()) {
+
inUsedAlgorithms.add(currentRuleConfig.getDefaultTableShardingStrategy().getShardingAlgorithmName());
+ }
Collection<String> unusedAlgorithms =
currentRuleConfig.getShardingAlgorithms().keySet().stream().filter(each ->
!inUsedAlgorithms.contains(each)).collect(Collectors.toSet());
unusedAlgorithms.forEach(each ->
currentRuleConfig.getShardingAlgorithms().remove(each));
}
diff --git
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleStatementUpdater.java
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleStatementUpdater.java
index 04f4048b67e..f8e7e774f0c 100644
---
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleStatementUpdater.java
+++
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleStatementUpdater.java
@@ -119,10 +119,18 @@ public final class DropShardingTableRuleStatementUpdater
extends AbstractDropSha
&& null ==
currentRuleConfig.getDefaultDatabaseShardingStrategy() && null ==
currentRuleConfig.getDefaultTableShardingStrategy();
}
+ private void dropShardingTable(final ShardingRuleConfiguration
currentRuleConfig, final String tableName) {
+
currentRuleConfig.getTables().removeAll(currentRuleConfig.getTables().stream().filter(each
->
tableName.equalsIgnoreCase(each.getLogicTable())).collect(Collectors.toList()));
+
currentRuleConfig.getAutoTables().removeAll(currentRuleConfig.getAutoTables().stream().filter(each
->
tableName.equalsIgnoreCase(each.getLogicTable())).collect(Collectors.toList()));
+ }
+
private void dropUnusedKeyGenerator(final ShardingRuleConfiguration
currentRuleConfig) {
Collection<String> inUsedKeyGenerators =
currentRuleConfig.getTables().stream().map(ShardingTableRuleConfiguration::getKeyGenerateStrategy).filter(Objects::nonNull)
.map(KeyGenerateStrategyConfiguration::getKeyGeneratorName).collect(Collectors.toSet());
-
inUsedKeyGenerators.addAll(currentRuleConfig.getAutoTables().stream().map(each
->
each.getKeyGenerateStrategy().getKeyGeneratorName()).collect(Collectors.toSet()));
+
inUsedKeyGenerators.addAll(currentRuleConfig.getTables().stream().filter(each
-> Objects.nonNull(each.getKeyGenerateStrategy()))
+ .map(each ->
each.getKeyGenerateStrategy().getKeyGeneratorName()).collect(Collectors.toSet()));
+
inUsedKeyGenerators.addAll(currentRuleConfig.getAutoTables().stream().filter(each
-> Objects.nonNull(each.getKeyGenerateStrategy()))
+ .map(each ->
each.getKeyGenerateStrategy().getKeyGeneratorName()).collect(Collectors.toSet()));
if (null != currentRuleConfig.getDefaultKeyGenerateStrategy()) {
inUsedKeyGenerators.add(currentRuleConfig.getDefaultKeyGenerateStrategy().getKeyGeneratorName());
}
@@ -133,7 +141,10 @@ public final class DropShardingTableRuleStatementUpdater
extends AbstractDropSha
private void dropUnusedAuditor(final ShardingRuleConfiguration
currentRuleConfig) {
Collection<String> inUsedAuditors =
currentRuleConfig.getTables().stream().map(ShardingTableRuleConfiguration::getAuditStrategy).filter(Objects::nonNull)
.flatMap(each ->
each.getAuditorNames().stream()).collect(Collectors.toSet());
-
inUsedAuditors.addAll(currentRuleConfig.getAutoTables().stream().flatMap(each
->
each.getAuditStrategy().getAuditorNames().stream()).collect(Collectors.toSet()));
+
inUsedAuditors.addAll(currentRuleConfig.getTables().stream().filter(each ->
Objects.nonNull(each.getAuditStrategy()))
+ .flatMap(each ->
each.getAuditStrategy().getAuditorNames().stream()).collect(Collectors.toSet()));
+
inUsedAuditors.addAll(currentRuleConfig.getAutoTables().stream().filter(each ->
Objects.nonNull(each.getAuditStrategy()))
+ .flatMap(each ->
each.getAuditStrategy().getAuditorNames().stream()).collect(Collectors.toSet()));
if (null != currentRuleConfig.getDefaultAuditStrategy()) {
inUsedAuditors.addAll(currentRuleConfig.getDefaultAuditStrategy().getAuditorNames());
}
@@ -141,11 +152,6 @@ public final class DropShardingTableRuleStatementUpdater
extends AbstractDropSha
unusedAuditors.forEach(each ->
currentRuleConfig.getAuditors().remove(each));
}
- private void dropShardingTable(final ShardingRuleConfiguration
currentRuleConfig, final String tableName) {
-
currentRuleConfig.getTables().removeAll(currentRuleConfig.getTables().stream().filter(each
->
tableName.equalsIgnoreCase(each.getLogicTable())).collect(Collectors.toList()));
-
currentRuleConfig.getAutoTables().removeAll(currentRuleConfig.getAutoTables().stream().filter(each
->
tableName.equalsIgnoreCase(each.getLogicTable())).collect(Collectors.toList()));
- }
-
@Override
public Class<ShardingRuleConfiguration> getRuleConfigurationClass() {
return ShardingRuleConfiguration.class;
diff --git
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleStatementUpdaterTest.java
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleStatementUpdaterTest.java
index aa075e46d2d..d5c5e53fb0e 100644
---
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleStatementUpdaterTest.java
+++
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleStatementUpdaterTest.java
@@ -26,6 +26,8 @@ import
org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
import
org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
import
org.apache.shardingsphere.sharding.api.config.rule.ShardingTableReferenceRuleConfiguration;
import
org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
+import
org.apache.shardingsphere.sharding.api.config.strategy.audit.ShardingAuditStrategyConfiguration;
+import
org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
import
org.apache.shardingsphere.sharding.api.config.strategy.sharding.StandardShardingStrategyConfiguration;
import
org.apache.shardingsphere.sharding.distsql.handler.update.DropShardingTableRuleStatementUpdater;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingTableRuleStatement;
@@ -103,8 +105,8 @@ public final class
DropShardingTableRuleStatementUpdaterTest {
assertFalse(getShardingTables(currentRuleConfig).contains("t_order"));
assertTrue(getBindingTables(currentRuleConfig).contains("t_order_item"));
assertThat(currentRuleConfig.getShardingAlgorithms().size(), is(2));
- assertThat(currentRuleConfig.getKeyGenerators().size(), is(0));
- assertThat(currentRuleConfig.getAuditors().size(), is(0));
+ assertThat(currentRuleConfig.getKeyGenerators().size(), is(1));
+ assertThat(currentRuleConfig.getAuditors().size(), is(1));
}
private DropShardingTableRuleStatement createSQLStatement(final String
tableName) {
@@ -112,17 +114,24 @@ public final class
DropShardingTableRuleStatementUpdaterTest {
}
private ShardingRuleConfiguration createCurrentRuleConfiguration() {
- ShardingRuleConfiguration result = new ShardingRuleConfiguration();
ShardingTableRuleConfiguration tableRuleConfig = new
ShardingTableRuleConfiguration("t_order_item", null);
tableRuleConfig.setDatabaseShardingStrategy(new
StandardShardingStrategyConfiguration("order_id", "t_order_item_algorithm"));
+ tableRuleConfig.setKeyGenerateStrategy(new
KeyGenerateStrategyConfiguration("id", "in_used_key_generator"));
+ tableRuleConfig.setAuditStrategy(new
ShardingAuditStrategyConfiguration(Collections.singleton("in_used_auditor"),
false));
+ ShardingRuleConfiguration result = new ShardingRuleConfiguration();
result.getTables().add(tableRuleConfig);
- result.getAutoTables().add(new
ShardingAutoTableRuleConfiguration("t_order", null));
+ ShardingAutoTableRuleConfiguration autoTableRuleConfig = new
ShardingAutoTableRuleConfiguration("t_order", null);
+ autoTableRuleConfig.setShardingStrategy(new
StandardShardingStrategyConfiguration("order_id", "t_order_algorithm"));
+ result.getAutoTables().add(autoTableRuleConfig);
result.getBindingTableGroups().add(new
ShardingTableReferenceRuleConfiguration("reference_0", "t_order_item"));
result.setDefaultTableShardingStrategy(new
StandardShardingStrategyConfiguration("user_id", "default_table_strategy"));
result.getShardingAlgorithms().put("unused_algorithm", null);
result.getShardingAlgorithms().put("t_order_item_algorithm", null);
+ result.getShardingAlgorithms().put("t_order_algorithm", null);
result.getShardingAlgorithms().put("default_table_strategy", null);
+ result.getKeyGenerators().put("in_used_key_generator", null);
result.getKeyGenerators().put("unused_key_generator", null);
+ result.getAuditors().put("in_used_auditor", null);
result.getAuditors().put("unused_auditor", null);
return result;
}