You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2022/12/03 11:35:09 UTC
[shardingsphere] branch master updated: Remove empty rule configuration after drop rule. (#22625)
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 45715422fae Remove empty rule configuration after drop rule. (#22625)
45715422fae is described below
commit 45715422fae25d7409ed88fd54089de858c71ae5
Author: Raigor <ra...@gmail.com>
AuthorDate: Sat Dec 3 19:34:57 2022 +0800
Remove empty rule configuration after drop rule. (#22625)
---
.../update/DropDatabaseDiscoveryRuleStatementUpdater.java | 2 +-
.../update/DropDatabaseDiscoveryRuleStatementUpdaterTest.java | 2 +-
.../handler/update/DropShadowRuleStatementUpdater.java | 4 ++--
.../update/DropBroadcastTableRuleStatementUpdater.java | 3 ++-
.../handler/update/DropDefaultStrategyStatementUpdater.java | 3 ++-
.../handler/update/DropShardingTableRuleStatementUpdater.java | 3 ++-
.../update/DropBroadcastTableRuleStatementUpdaterTest.java | 8 ++------
.../DropDefaultShardingStrategyStatementUpdaterTest.java | 11 +++++++++++
.../update/DropShardingTableRuleStatementUpdaterTest.java | 3 ++-
9 files changed, 25 insertions(+), 14 deletions(-)
diff --git a/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/DropDatabaseDiscoveryRuleStatementUpdater.java b/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/DropDatabaseDiscoveryRuleStatementUpdater.java
index e33ef6821b9..d89da8957dc 100644
--- a/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/DropDatabaseDiscoveryRuleStatementUpdater.java
+++ b/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/DropDatabaseDiscoveryRuleStatementUpdater.java
@@ -84,7 +84,7 @@ public final class DropDatabaseDiscoveryRuleStatementUpdater implements RuleDefi
sqlStatement.getNames().forEach(each -> dropRule(currentRuleConfig, each));
dropUnusedType(currentRuleConfig);
dropUnusedHeartbeat(currentRuleConfig);
- return false;
+ return currentRuleConfig.getDataSources().isEmpty();
}
private void dropRule(final DatabaseDiscoveryRuleConfiguration currentRuleConfig, final String ruleName) {
diff --git a/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/DropDatabaseDiscoveryRuleStatementUpdaterTest.java b/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/DropDatabaseDiscoveryRuleStatementUpdaterTest.java
index 0fd2990f99a..1794d421b2d 100644
--- a/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/DropDatabaseDiscoveryRuleStatementUpdaterTest.java
+++ b/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/DropDatabaseDiscoveryRuleStatementUpdaterTest.java
@@ -105,7 +105,7 @@ public final class DropDatabaseDiscoveryRuleStatementUpdaterTest {
@Test
public void assertUpdateCurrentRuleConfiguration() {
DatabaseDiscoveryRuleConfiguration databaseDiscoveryRuleConfig = createCurrentRuleConfiguration();
- updater.updateCurrentRuleConfiguration(createSQLStatement(), databaseDiscoveryRuleConfig);
+ assertTrue(updater.updateCurrentRuleConfiguration(createSQLStatement(), databaseDiscoveryRuleConfig));
assertTrue(databaseDiscoveryRuleConfig.getDataSources().isEmpty());
assertTrue(databaseDiscoveryRuleConfig.getDiscoveryTypes().isEmpty());
assertTrue(databaseDiscoveryRuleConfig.getDiscoveryHeartbeats().isEmpty());
diff --git a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropShadowRuleStatementUpdater.java b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropShadowRuleStatementUpdater.java
index d4f314f6681..854ef3b876c 100644
--- a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropShadowRuleStatementUpdater.java
+++ b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropShadowRuleStatementUpdater.java
@@ -68,11 +68,11 @@ public final class DropShadowRuleStatementUpdater implements RuleDefinitionDropU
currentRuleConfig.getDataSources().removeIf(each -> sqlStatement.getNames().contains(each.getName()));
currentRuleConfig.getTables().forEach((key, value) -> value.getDataSourceNames().removeIf(sqlStatement.getNames()::contains));
currentRuleConfig.getTables().entrySet().removeIf(entry -> entry.getValue().getDataSourceNames().isEmpty());
- removeUnusedAlgorithm(currentRuleConfig);
+ dropUnusedAlgorithm(currentRuleConfig);
return currentRuleConfig.getDataSources().isEmpty() || currentRuleConfig.getTables().isEmpty();
}
- private void removeUnusedAlgorithm(final ShadowRuleConfiguration currentRuleConfig) {
+ private void dropUnusedAlgorithm(final ShadowRuleConfiguration currentRuleConfig) {
Collection<String> inUsedAlgorithms = currentRuleConfig.getTables().entrySet().stream().flatMap(entry -> entry.getValue().getShadowAlgorithmNames().stream()).collect(Collectors.toSet());
if (null != currentRuleConfig.getDefaultShadowAlgorithmName()) {
inUsedAlgorithms.add(currentRuleConfig.getDefaultShadowAlgorithmName());
diff --git a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropBroadcastTableRuleStatementUpdater.java b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropBroadcastTableRuleStatementUpdater.java
index 56439a7aa84..b563fa24bc6 100644
--- a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropBroadcastTableRuleStatementUpdater.java
+++ b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropBroadcastTableRuleStatementUpdater.java
@@ -68,7 +68,8 @@ public final class DropBroadcastTableRuleStatementUpdater implements RuleDefinit
@Override
public boolean updateCurrentRuleConfiguration(final DropBroadcastTableRuleStatement sqlStatement, final ShardingRuleConfiguration currentRuleConfig) {
currentRuleConfig.getBroadcastTables().removeIf(each -> containsIgnoreCase(sqlStatement.getTables(), each));
- return false;
+ return currentRuleConfig.getTables().isEmpty() && currentRuleConfig.getAutoTables().isEmpty() && currentRuleConfig.getBroadcastTables().isEmpty()
+ && null == currentRuleConfig.getDefaultDatabaseShardingStrategy() && null == currentRuleConfig.getDefaultTableShardingStrategy();
}
@Override
diff --git a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultStrategyStatementUpdater.java b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultStrategyStatementUpdater.java
index 7aac168c60f..c06e24586e3 100644
--- a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultStrategyStatementUpdater.java
+++ b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultStrategyStatementUpdater.java
@@ -80,7 +80,8 @@ public final class DropDefaultStrategyStatementUpdater extends AbstractDropShard
currentRuleConfig.setDefaultDatabaseShardingStrategy(null);
}
dropUnusedAlgorithm(currentRuleConfig);
- return false;
+ return currentRuleConfig.getTables().isEmpty() && currentRuleConfig.getAutoTables().isEmpty() && currentRuleConfig.getBroadcastTables().isEmpty()
+ && null == currentRuleConfig.getDefaultDatabaseShardingStrategy() && null == currentRuleConfig.getDefaultTableShardingStrategy();
}
@Override
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 46bb7f7e831..d8993d76298 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
@@ -115,7 +115,8 @@ public final class DropShardingTableRuleStatementUpdater extends AbstractDropSha
dropUnusedAlgorithm(currentRuleConfig);
dropUnusedKeyGenerator(currentRuleConfig);
dropUnusedAuditor(currentRuleConfig);
- return false;
+ return currentRuleConfig.getTables().isEmpty() && currentRuleConfig.getAutoTables().isEmpty() && currentRuleConfig.getBroadcastTables().isEmpty()
+ && null == currentRuleConfig.getDefaultDatabaseShardingStrategy() && null == currentRuleConfig.getDefaultTableShardingStrategy();
}
private void dropUnusedKeyGenerator(final ShardingRuleConfiguration currentRuleConfig) {
diff --git a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropBroadcastTableRuleStatementUpdaterTest.java b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropBroadcastTableRuleStatementUpdaterTest.java
index 5252bbc50a5..daa63bc9394 100644
--- a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropBroadcastTableRuleStatementUpdaterTest.java
+++ b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropBroadcastTableRuleStatementUpdaterTest.java
@@ -20,8 +20,6 @@ package org.apache.shardingsphere.sharding.distsql.update;
import org.apache.shardingsphere.infra.distsql.exception.rule.MissingRequiredRuleException;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
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.ShardingTableRuleConfiguration;
import org.apache.shardingsphere.sharding.distsql.handler.update.DropBroadcastTableRuleStatementUpdater;
import org.apache.shardingsphere.sharding.distsql.parser.statement.DropBroadcastTableRuleStatement;
import org.junit.Test;
@@ -75,8 +73,8 @@ public final class DropBroadcastTableRuleStatementUpdaterTest {
@Test
public void assertDropSpecifiedRule() {
ShardingRuleConfiguration currentRuleConfig = createCurrentRuleConfiguration();
- updater.updateCurrentRuleConfiguration(createSQLStatement("t_order"), currentRuleConfig);
- updater.updateCurrentRuleConfiguration(createSQLStatement("t_address"), currentRuleConfig);
+ assertFalse(updater.updateCurrentRuleConfiguration(createSQLStatement("t_order"), currentRuleConfig));
+ assertTrue(updater.updateCurrentRuleConfiguration(createSQLStatement("t_address"), currentRuleConfig));
assertTrue(currentRuleConfig.getBroadcastTables().isEmpty());
}
@@ -108,8 +106,6 @@ public final class DropBroadcastTableRuleStatementUpdaterTest {
private ShardingRuleConfiguration createCurrentRuleConfiguration() {
ShardingRuleConfiguration result = new ShardingRuleConfiguration();
- result.getTables().add(new ShardingTableRuleConfiguration("t_order_item"));
- result.getAutoTables().add(new ShardingAutoTableRuleConfiguration("t_order", null));
result.getBroadcastTables().add("t_order");
result.getBroadcastTables().add("t_address");
return result;
diff --git a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropDefaultShardingStrategyStatementUpdaterTest.java b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropDefaultShardingStrategyStatementUpdaterTest.java
index 35258a805df..829cd25dd8f 100644
--- a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropDefaultShardingStrategyStatementUpdaterTest.java
+++ b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropDefaultShardingStrategyStatementUpdaterTest.java
@@ -36,6 +36,7 @@ import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -79,6 +80,16 @@ public final class DropDefaultShardingStrategyStatementUpdaterTest {
assertThat(currentRuleConfig.getShardingAlgorithms().size(), is(1));
}
+ @Test
+ public void assertUpdateMultipleStrategies() {
+ ShardingRuleConfiguration currentRuleConfig = createMultipleCurrentRuleConfiguration();
+ assertFalse(updater.updateCurrentRuleConfiguration(createSQLStatement("Database"), currentRuleConfig));
+ assertTrue(updater.updateCurrentRuleConfiguration(createSQLStatement("Table"), currentRuleConfig));
+ assertNull(currentRuleConfig.getDefaultTableShardingStrategy());
+ assertNull(currentRuleConfig.getDefaultTableShardingStrategy());
+ assertTrue(currentRuleConfig.getShardingAlgorithms().isEmpty());
+ }
+
private DropDefaultShardingStrategyStatement createSQLStatement(final String defaultType) {
return new DropDefaultShardingStrategyStatement(false, defaultType);
}
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 3af737ec15f..552080b6e8b 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
@@ -81,7 +81,8 @@ public final class DropShardingTableRuleStatementUpdaterTest {
@Test
public void assertUpdate() {
ShardingRuleConfiguration currentRuleConfig = createCurrentRuleConfiguration();
- new DropShardingTableRuleStatementUpdater().updateCurrentRuleConfiguration(createSQLStatement("t_order"), currentRuleConfig);
+ assertFalse(new DropShardingTableRuleStatementUpdater().updateCurrentRuleConfiguration(createSQLStatement("t_order"), currentRuleConfig));
+ assertTrue(new DropShardingTableRuleStatementUpdater().updateCurrentRuleConfiguration(createSQLStatement("t_order"), new ShardingRuleConfiguration()));
assertFalse(getShardingTables(currentRuleConfig).contains("t_order"));
assertTrue(getBindingTables(currentRuleConfig).contains("t_order_item"));
}