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 <[email protected]>
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"));
}