This is an automated email from the ASF dual-hosted git repository.
sunnianjun 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 40ccd5a52f7 Refactor DatabaseRuleDropExecutor (#29939)
40ccd5a52f7 is described below
commit 40ccd5a52f7e5666bbbd444d45ed55d264941596
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Jan 31 23:34:51 2024 +0800
Refactor DatabaseRuleDropExecutor (#29939)
* Refactor DatabaseRuleDropExecutor
* Refactor DatabaseRuleDropExecutor
* Refactor DatabaseRuleDropExecutor
* Refactor DatabaseRuleDropExecutor
---
.../update/DropBroadcastTableRuleExecutor.java | 8 +++----
.../handler/update/DropEncryptRuleExecutor.java | 22 +++++++++--------
.../update/DropEncryptRuleExecutorTest.java | 6 +++++
.../handler/update/DropMaskRuleExecutor.java | 20 ++++++++--------
.../handler/update/DropMaskRuleExecutorTest.java | 3 +++
.../update/DropReadwriteSplittingRuleExecutor.java | 28 +++++++++++-----------
.../DropReadwriteSplittingRuleExecutorTest.java | 9 +++++++
.../update/DropDefaultShadowAlgorithmExecutor.java | 12 +++++-----
.../update/DropShadowAlgorithmExecutor.java | 10 ++++----
.../handler/update/DropShadowRuleExecutor.java | 28 +++++++++++-----------
.../DropDefaultShadowAlgorithmExecutorTest.java | 5 +++-
.../DropDefaultShardingStrategyExecutor.java | 18 +++++++-------
.../update/DropShardingAlgorithmExecutor.java | 8 +++----
.../update/DropShardingAuditorExecutor.java | 8 +++----
.../update/DropShardingKeyGeneratorExecutor.java | 8 +++----
.../update/DropShardingTableReferenceExecutor.java | 6 ++---
.../update/DropShardingTableRuleExecutor.java | 23 +++++++++---------
.../DropShardingTableReferenceExecutorTest.java | 4 ++--
.../DatabaseRuleDefinitionExecuteEngine.java | 6 ++---
.../database/type/DropDatabaseRuleOperator.java | 6 ++---
.../spi/database/DatabaseRuleDropExecutor.java | 9 +++----
.../LegacyDatabaseRuleDefinitionExecuteEngine.java | 8 +++----
22 files changed, 138 insertions(+), 117 deletions(-)
diff --git
a/features/broadcast/distsql/handler/src/main/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutor.java
b/features/broadcast/distsql/handler/src/main/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutor.java
index 83e6bcef247..d6f3c0d4091 100644
---
a/features/broadcast/distsql/handler/src/main/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutor.java
+++
b/features/broadcast/distsql/handler/src/main/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutor.java
@@ -60,13 +60,13 @@ public final class DropBroadcastTableRuleExecutor
implements DatabaseRuleDropExe
}
@Override
- public boolean hasAnyOneToBeDropped(final DropBroadcastTableRuleStatement
sqlStatement, final BroadcastRuleConfiguration currentRuleConfig) {
- return isExistRuleConfig(currentRuleConfig) &&
!getIdenticalData(currentRuleConfig.getTables(),
sqlStatement.getTables()).isEmpty();
+ public boolean hasAnyOneToBeDropped(final DropBroadcastTableRuleStatement
sqlStatement) {
+ return isExistRuleConfig(rule.getConfiguration()) &&
!getIdenticalData(rule.getConfiguration().getTables(),
sqlStatement.getTables()).isEmpty();
}
@Override
- public BroadcastRuleConfiguration buildToBeAlteredRuleConfiguration(final
DropBroadcastTableRuleStatement sqlStatement, final BroadcastRuleConfiguration
currentRuleConfig) {
- BroadcastRuleConfiguration result = new BroadcastRuleConfiguration(new
HashSet<>(currentRuleConfig.getTables()));
+ public BroadcastRuleConfiguration buildToBeAlteredRuleConfiguration(final
DropBroadcastTableRuleStatement sqlStatement) {
+ BroadcastRuleConfiguration result = new BroadcastRuleConfiguration(new
HashSet<>(rule.getConfiguration().getTables()));
result.getTables().removeIf(each ->
containsIgnoreCase(sqlStatement.getTables(), each));
return result;
}
diff --git
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutor.java
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutor.java
index b0aedec3419..f51f2450ebe 100644
---
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutor.java
+++
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutor.java
@@ -63,33 +63,35 @@ public final class DropEncryptRuleExecutor implements
DatabaseRuleDropExecutor<D
}
@Override
- public boolean hasAnyOneToBeDropped(final DropEncryptRuleStatement
sqlStatement, final EncryptRuleConfiguration currentRuleConfig) {
- return null != currentRuleConfig
- &&
!getIdenticalData(currentRuleConfig.getTables().stream().map(EncryptTableRuleConfiguration::getName).collect(Collectors.toSet()),
sqlStatement.getTables()).isEmpty();
+ public boolean hasAnyOneToBeDropped(final DropEncryptRuleStatement
sqlStatement) {
+ return null != rule && !getIdenticalData(((EncryptRuleConfiguration)
rule.getConfiguration())
+
.getTables().stream().map(EncryptTableRuleConfiguration::getName).collect(Collectors.toSet()),
sqlStatement.getTables()).isEmpty();
}
@Override
- public EncryptRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropEncryptRuleStatement sqlStatement, final EncryptRuleConfiguration
currentRuleConfig) {
+ public EncryptRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropEncryptRuleStatement sqlStatement) {
Collection<EncryptTableRuleConfiguration> toBeDroppedTables = new
LinkedList<>();
Map<String, AlgorithmConfiguration> toBeDroppedEncryptors = new
HashMap<>();
for (String each : sqlStatement.getTables()) {
toBeDroppedTables.add(new EncryptTableRuleConfiguration(each,
Collections.emptyList()));
- dropRule(currentRuleConfig, each);
+ dropRule(each);
}
-
UnusedAlgorithmFinder.findUnusedEncryptor(currentRuleConfig).forEach(each ->
toBeDroppedEncryptors.put(each, currentRuleConfig.getEncryptors().get(each)));
+ UnusedAlgorithmFinder.findUnusedEncryptor((EncryptRuleConfiguration)
rule.getConfiguration())
+ .forEach(each -> toBeDroppedEncryptors.put(each,
((EncryptRuleConfiguration)
rule.getConfiguration()).getEncryptors().get(each)));
return new EncryptRuleConfiguration(toBeDroppedTables,
toBeDroppedEncryptors);
}
@Override
public boolean updateCurrentRuleConfiguration(final
DropEncryptRuleStatement sqlStatement, final EncryptRuleConfiguration
currentRuleConfig) {
- sqlStatement.getTables().forEach(each -> dropRule(currentRuleConfig,
each));
+ sqlStatement.getTables().forEach(this::dropRule);
dropUnusedEncryptor(currentRuleConfig);
return currentRuleConfig.isEmpty();
}
- private void dropRule(final EncryptRuleConfiguration currentRuleConfig,
final String ruleName) {
- Optional<EncryptTableRuleConfiguration> encryptTableRuleConfig =
currentRuleConfig.getTables().stream().filter(each ->
each.getName().equals(ruleName)).findAny();
- encryptTableRuleConfig.ifPresent(optional ->
currentRuleConfig.getTables().remove(encryptTableRuleConfig.get()));
+ private void dropRule(final String ruleName) {
+ Optional<EncryptTableRuleConfiguration> encryptTableRuleConfig =
((EncryptRuleConfiguration) rule.getConfiguration()).getTables().stream()
+ .filter(each -> each.getName().equals(ruleName)).findAny();
+ encryptTableRuleConfig.ifPresent(optional ->
((EncryptRuleConfiguration)
rule.getConfiguration()).getTables().remove(encryptTableRuleConfig.get()));
}
private void dropUnusedEncryptor(final EncryptRuleConfiguration
currentRuleConfig) {
diff --git
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java
index 26571a74d26..7f46a79b1eb 100644
---
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java
+++
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java
@@ -66,6 +66,9 @@ class DropEncryptRuleExecutorTest {
@Test
void assertUpdateCurrentRuleConfiguration() {
EncryptRuleConfiguration ruleConfig = createCurrentRuleConfiguration();
+ EncryptRule rule = mock(EncryptRule.class);
+ when(rule.getConfiguration()).thenReturn(ruleConfig);
+ executor.setRule(rule);
assertTrue(executor.updateCurrentRuleConfiguration(createSQLStatement("t_encrypt"),
ruleConfig));
assertTrue(ruleConfig.getEncryptors().isEmpty());
}
@@ -73,6 +76,9 @@ class DropEncryptRuleExecutorTest {
@Test
void assertUpdateCurrentRuleConfigurationWithInUsedEncryptor() {
EncryptRuleConfiguration ruleConfig =
createCurrentRuleConfigurationWithMultipleTableRules();
+ EncryptRule rule = mock(EncryptRule.class);
+ when(rule.getConfiguration()).thenReturn(ruleConfig);
+ executor.setRule(rule);
assertFalse(executor.updateCurrentRuleConfiguration(createSQLStatement("t_encrypt"),
ruleConfig));
assertThat(ruleConfig.getEncryptors().size(), is(1));
}
diff --git
a/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutor.java
b/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutor.java
index e08f6f3a97b..8a884c459f3 100644
---
a/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutor.java
+++
b/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutor.java
@@ -63,33 +63,33 @@ public final class DropMaskRuleExecutor implements
DatabaseRuleDropExecutor<Drop
}
@Override
- public boolean hasAnyOneToBeDropped(final DropMaskRuleStatement
sqlStatement, final MaskRuleConfiguration currentRuleConfig) {
- return null != currentRuleConfig
- &&
!getIdenticalData(currentRuleConfig.getTables().stream().map(MaskTableRuleConfiguration::getName).collect(Collectors.toSet()),
sqlStatement.getTables()).isEmpty();
+ public boolean hasAnyOneToBeDropped(final DropMaskRuleStatement
sqlStatement) {
+ return null != rule
+ &&
!getIdenticalData(rule.getConfiguration().getTables().stream().map(MaskTableRuleConfiguration::getName).collect(Collectors.toSet()),
sqlStatement.getTables()).isEmpty();
}
@Override
- public MaskRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropMaskRuleStatement sqlStatement, final MaskRuleConfiguration
currentRuleConfig) {
+ public MaskRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropMaskRuleStatement sqlStatement) {
Collection<MaskTableRuleConfiguration> toBeDroppedTables = new
LinkedList<>();
Map<String, AlgorithmConfiguration> toBeDroppedAlgorithms = new
LinkedHashMap<>();
for (String each : sqlStatement.getTables()) {
toBeDroppedTables.add(new MaskTableRuleConfiguration(each,
Collections.emptyList()));
- dropRule(currentRuleConfig, each);
+ dropRule(each);
}
- findUnusedAlgorithms(currentRuleConfig).forEach(each ->
toBeDroppedAlgorithms.put(each,
currentRuleConfig.getMaskAlgorithms().get(each)));
+ findUnusedAlgorithms(rule.getConfiguration()).forEach(each ->
toBeDroppedAlgorithms.put(each,
rule.getConfiguration().getMaskAlgorithms().get(each)));
return new MaskRuleConfiguration(toBeDroppedTables,
toBeDroppedAlgorithms);
}
@Override
public boolean updateCurrentRuleConfiguration(final DropMaskRuleStatement
sqlStatement, final MaskRuleConfiguration currentRuleConfig) {
- sqlStatement.getTables().forEach(each -> dropRule(currentRuleConfig,
each));
+ sqlStatement.getTables().forEach(this::dropRule);
dropUnusedAlgorithm(currentRuleConfig);
return currentRuleConfig.isEmpty();
}
- private void dropRule(final MaskRuleConfiguration currentRuleConfig, final
String ruleName) {
- Optional<MaskTableRuleConfiguration> maskTableRuleConfig =
currentRuleConfig.getTables().stream().filter(each ->
each.getName().equals(ruleName)).findAny();
- maskTableRuleConfig.ifPresent(optional ->
currentRuleConfig.getTables().remove(maskTableRuleConfig.get()));
+ private void dropRule(final String ruleName) {
+ Optional<MaskTableRuleConfiguration> maskTableRuleConfig =
rule.getConfiguration().getTables().stream().filter(each ->
each.getName().equals(ruleName)).findAny();
+ maskTableRuleConfig.ifPresent(optional ->
rule.getConfiguration().getTables().remove(maskTableRuleConfig.get()));
}
private void dropUnusedAlgorithm(final MaskRuleConfiguration
currentRuleConfig) {
diff --git
a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutorTest.java
b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutorTest.java
index a81a40a74d1..93080888b74 100644
---
a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutorTest.java
+++
b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutorTest.java
@@ -60,6 +60,9 @@ class DropMaskRuleExecutorTest {
@Test
void assertUpdateCurrentRuleConfiguration() {
MaskRuleConfiguration ruleConfig = createCurrentRuleConfiguration();
+ MaskRule rule = mock(MaskRule.class);
+ when(rule.getConfiguration()).thenReturn(ruleConfig);
+ executor.setRule(rule);
assertTrue(executor.updateCurrentRuleConfiguration(createSQLStatement(false,
"t_mask"), ruleConfig));
assertTrue(ruleConfig.getMaskAlgorithms().isEmpty());
assertTrue(ruleConfig.getTables().isEmpty());
diff --git
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutor.java
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutor.java
index 4087c2a6416..0bd8e1e2bff 100644
---
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutor.java
+++
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutor.java
@@ -96,44 +96,44 @@ public final class DropReadwriteSplittingRuleExecutor
implements DatabaseRuleDro
}
@Override
- public ReadwriteSplittingRuleConfiguration
buildToBeDroppedRuleConfiguration(final DropReadwriteSplittingRuleStatement
sqlStatement, final ReadwriteSplittingRuleConfiguration currentRuleConfig) {
+ public ReadwriteSplittingRuleConfiguration
buildToBeDroppedRuleConfiguration(final DropReadwriteSplittingRuleStatement
sqlStatement) {
Collection<ReadwriteSplittingDataSourceRuleConfiguration>
toBeDroppedDataSources = new LinkedList<>();
Map<String, AlgorithmConfiguration> toBeDroppedLoadBalancers = new
HashMap<>();
for (String each : sqlStatement.getNames()) {
toBeDroppedDataSources.add(new
ReadwriteSplittingDataSourceRuleConfiguration(each, null, null, null));
- dropRule(currentRuleConfig, each);
+ dropRule(each);
}
- findUnusedLoadBalancers(currentRuleConfig).forEach(each ->
toBeDroppedLoadBalancers.put(each,
currentRuleConfig.getLoadBalancers().get(each)));
+ findUnusedLoadBalancers().forEach(each ->
toBeDroppedLoadBalancers.put(each,
rule.getConfiguration().getLoadBalancers().get(each)));
return new ReadwriteSplittingRuleConfiguration(toBeDroppedDataSources,
toBeDroppedLoadBalancers);
}
@Override
public boolean updateCurrentRuleConfiguration(final
DropReadwriteSplittingRuleStatement sqlStatement, final
ReadwriteSplittingRuleConfiguration currentRuleConfig) {
for (String each : sqlStatement.getNames()) {
- dropRule(currentRuleConfig, each);
+ dropRule(each);
}
dropUnusedLoadBalancer(currentRuleConfig);
return currentRuleConfig.isEmpty();
}
- private void dropRule(final ReadwriteSplittingRuleConfiguration
currentRuleConfig, final String ruleName) {
- Optional<ReadwriteSplittingDataSourceRuleConfiguration>
dataSourceRuleConfig = currentRuleConfig.getDataSources().stream().filter(each
-> ruleName.equals(each.getName())).findAny();
- dataSourceRuleConfig.ifPresent(optional ->
currentRuleConfig.getDataSources().remove(optional));
+ private void dropRule(final String ruleName) {
+ Optional<ReadwriteSplittingDataSourceRuleConfiguration>
dataSourceRuleConfig =
rule.getConfiguration().getDataSources().stream().filter(each ->
ruleName.equals(each.getName())).findAny();
+ dataSourceRuleConfig.ifPresent(optional ->
rule.getConfiguration().getDataSources().remove(optional));
}
private void dropUnusedLoadBalancer(final
ReadwriteSplittingRuleConfiguration currentRuleConfig) {
- findUnusedLoadBalancers(currentRuleConfig).forEach(each ->
currentRuleConfig.getLoadBalancers().remove(each));
+ findUnusedLoadBalancers().forEach(each ->
currentRuleConfig.getLoadBalancers().remove(each));
}
- private Collection<String> findUnusedLoadBalancers(final
ReadwriteSplittingRuleConfiguration currentRuleConfig) {
- Collection<String> inUsedAlgorithms =
currentRuleConfig.getDataSources().stream().map(ReadwriteSplittingDataSourceRuleConfiguration::getLoadBalancerName).collect(Collectors.toSet());
- return
currentRuleConfig.getLoadBalancers().keySet().stream().filter(each ->
!inUsedAlgorithms.contains(each)).collect(Collectors.toSet());
+ private Collection<String> findUnusedLoadBalancers() {
+ Collection<String> inUsedAlgorithms =
rule.getConfiguration().getDataSources().stream().map(ReadwriteSplittingDataSourceRuleConfiguration::getLoadBalancerName).collect(Collectors.toSet());
+ return
rule.getConfiguration().getLoadBalancers().keySet().stream().filter(each ->
!inUsedAlgorithms.contains(each)).collect(Collectors.toSet());
}
@Override
- public boolean hasAnyOneToBeDropped(final
DropReadwriteSplittingRuleStatement sqlStatement, final
ReadwriteSplittingRuleConfiguration currentRuleConfig) {
- return null != currentRuleConfig &&
!getIdenticalData(currentRuleConfig.getDataSources().stream()
-
.map(ReadwriteSplittingDataSourceRuleConfiguration::getName).collect(Collectors.toSet()),
sqlStatement.getNames()).isEmpty();
+ public boolean hasAnyOneToBeDropped(final
DropReadwriteSplittingRuleStatement sqlStatement) {
+ return null != rule && !getIdenticalData(
+
rule.getConfiguration().getDataSources().stream().map(ReadwriteSplittingDataSourceRuleConfiguration::getName).collect(Collectors.toSet()),
sqlStatement.getNames()).isEmpty();
}
@Override
diff --git
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutorTest.java
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutorTest.java
index 7d432a8a900..76c4b4a279a 100644
---
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutorTest.java
+++
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutorTest.java
@@ -95,6 +95,9 @@ class DropReadwriteSplittingRuleExecutorTest {
@Test
void assertUpdateCurrentRuleConfiguration() {
ReadwriteSplittingRuleConfiguration ruleConfig =
createCurrentRuleConfiguration();
+ ReadwriteSplittingRule rule = mock(ReadwriteSplittingRule.class);
+ when(rule.getConfiguration()).thenReturn(ruleConfig);
+ executor.setRule(rule);
assertTrue(executor.updateCurrentRuleConfiguration(createSQLStatement(),
ruleConfig));
assertThat(ruleConfig.getLoadBalancers().size(), is(0));
}
@@ -102,6 +105,9 @@ class DropReadwriteSplittingRuleExecutorTest {
@Test
void assertUpdateCurrentRuleConfigurationWithInUsedLoadBalancer() {
ReadwriteSplittingRuleConfiguration ruleConfig =
createMultipleCurrentRuleConfigurations();
+ ReadwriteSplittingRule rule = mock(ReadwriteSplittingRule.class);
+ when(rule.getConfiguration()).thenReturn(ruleConfig);
+ executor.setRule(rule);
assertFalse(executor.updateCurrentRuleConfiguration(createSQLStatement(),
ruleConfig));
assertThat(ruleConfig.getLoadBalancers().size(), is(1));
}
@@ -109,6 +115,9 @@ class DropReadwriteSplittingRuleExecutorTest {
@Test
void assertUpdateCurrentRuleConfigurationWithoutLoadBalancerName() {
ReadwriteSplittingRuleConfiguration ruleConfig =
createCurrentRuleConfigurationWithoutLoadBalancerName();
+ ReadwriteSplittingRule rule = mock(ReadwriteSplittingRule.class);
+ when(rule.getConfiguration()).thenReturn(ruleConfig);
+ executor.setRule(rule);
assertTrue(executor.updateCurrentRuleConfiguration(createSQLStatement(),
ruleConfig));
assertThat(ruleConfig.getLoadBalancers().size(), is(0));
}
diff --git
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropDefaultShadowAlgorithmExecutor.java
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropDefaultShadowAlgorithmExecutor.java
index 67c2c5eafcc..f992330fb99 100644
---
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropDefaultShadowAlgorithmExecutor.java
+++
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropDefaultShadowAlgorithmExecutor.java
@@ -53,16 +53,16 @@ public final class DropDefaultShadowAlgorithmExecutor
implements DatabaseRuleDro
}
@Override
- public boolean hasAnyOneToBeDropped(final
DropDefaultShadowAlgorithmStatement sqlStatement, final ShadowRuleConfiguration
currentRuleConfig) {
- return null != currentRuleConfig && null !=
currentRuleConfig.getDefaultShadowAlgorithmName();
+ public boolean hasAnyOneToBeDropped(final
DropDefaultShadowAlgorithmStatement sqlStatement) {
+ return null != rule && null !=
rule.getConfiguration().getDefaultShadowAlgorithmName();
}
@Override
- public ShadowRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropDefaultShadowAlgorithmStatement sqlStatement, final ShadowRuleConfiguration
currentRuleConfig) {
+ public ShadowRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropDefaultShadowAlgorithmStatement sqlStatement) {
ShadowRuleConfiguration result = new ShadowRuleConfiguration();
-
result.setShadowAlgorithms(Collections.singletonMap(currentRuleConfig.getDefaultShadowAlgorithmName(),
-
currentRuleConfig.getShadowAlgorithms().get(currentRuleConfig.getDefaultShadowAlgorithmName())));
-
result.setDefaultShadowAlgorithmName(currentRuleConfig.getDefaultShadowAlgorithmName());
+
result.setShadowAlgorithms(Collections.singletonMap(rule.getConfiguration().getDefaultShadowAlgorithmName(),
+
rule.getConfiguration().getShadowAlgorithms().get(rule.getConfiguration().getDefaultShadowAlgorithmName())));
+
result.setDefaultShadowAlgorithmName(rule.getConfiguration().getDefaultShadowAlgorithmName());
return result;
}
diff --git
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropShadowAlgorithmExecutor.java
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropShadowAlgorithmExecutor.java
index a018326ad3c..00a2f623cbe 100644
---
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropShadowAlgorithmExecutor.java
+++
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropShadowAlgorithmExecutor.java
@@ -80,16 +80,16 @@ public final class DropShadowAlgorithmExecutor implements
DatabaseRuleDropExecut
}
@Override
- public boolean hasAnyOneToBeDropped(final DropShadowAlgorithmStatement
sqlStatement, final ShadowRuleConfiguration currentRuleConfig) {
- return null != currentRuleConfig
- &&
!getIdenticalData(ShadowRuleStatementSupporter.getAlgorithmNames(currentRuleConfig),
sqlStatement.getNames()).isEmpty();
+ public boolean hasAnyOneToBeDropped(final DropShadowAlgorithmStatement
sqlStatement) {
+ return null != rule
+ &&
!getIdenticalData(ShadowRuleStatementSupporter.getAlgorithmNames(rule.getConfiguration()),
sqlStatement.getNames()).isEmpty();
}
@Override
- public ShadowRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropShadowAlgorithmStatement sqlStatement, final ShadowRuleConfiguration
currentRuleConfig) {
+ public ShadowRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropShadowAlgorithmStatement sqlStatement) {
ShadowRuleConfiguration result = new ShadowRuleConfiguration();
for (String each : sqlStatement.getNames()) {
- result.getShadowAlgorithms().put(each,
currentRuleConfig.getShadowAlgorithms().get(each));
+ result.getShadowAlgorithms().put(each,
rule.getConfiguration().getShadowAlgorithms().get(each));
}
return result;
}
diff --git
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropShadowRuleExecutor.java
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropShadowRuleExecutor.java
index 3384b6d0f99..db390211f53 100644
---
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropShadowRuleExecutor.java
+++
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropShadowRuleExecutor.java
@@ -66,33 +66,33 @@ public final class DropShadowRuleExecutor implements
DatabaseRuleDropExecutor<Dr
}
@Override
- public boolean hasAnyOneToBeDropped(final DropShadowRuleStatement
sqlStatement, final ShadowRuleConfiguration currentRuleConfig) {
- return isExistRuleConfig(currentRuleConfig) &&
!getIdenticalData(sqlStatement.getNames(), getDataSourceNames()).isEmpty();
+ public boolean hasAnyOneToBeDropped(final DropShadowRuleStatement
sqlStatement) {
+ return isExistRuleConfig(rule.getConfiguration()) &&
!getIdenticalData(sqlStatement.getNames(), getDataSourceNames()).isEmpty();
}
@Override
- public ShadowRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropShadowRuleStatement sqlStatement, final ShadowRuleConfiguration
currentRuleConfig) {
+ public ShadowRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropShadowRuleStatement sqlStatement) {
ShadowRuleConfiguration result = new ShadowRuleConfiguration();
for (String each : sqlStatement.getNames()) {
result.getDataSources().add(new
ShadowDataSourceConfiguration(each, null, null));
- dropRule(currentRuleConfig, each);
+ dropRule(each);
}
- currentRuleConfig.getTables().forEach((key, value) ->
value.getDataSourceNames().removeIf(sqlStatement.getNames()::contains));
- for (Entry<String, ShadowTableConfiguration> each :
currentRuleConfig.getTables().entrySet()) {
+ rule.getConfiguration().getTables().forEach((key, value) ->
value.getDataSourceNames().removeIf(sqlStatement.getNames()::contains));
+ for (Entry<String, ShadowTableConfiguration> each :
rule.getConfiguration().getTables().entrySet()) {
if (each.getValue().getDataSourceNames().isEmpty()) {
result.getTables().put(each.getKey(), each.getValue());
}
}
- currentRuleConfig.getTables().entrySet().removeIf(each ->
each.getValue().getDataSourceNames().isEmpty());
-
UnusedAlgorithmFinder.findUnusedShadowAlgorithm(currentRuleConfig).forEach(each
-> result.getShadowAlgorithms().put(each,
currentRuleConfig.getShadowAlgorithms().get(each)));
+ rule.getConfiguration().getTables().entrySet().removeIf(each ->
each.getValue().getDataSourceNames().isEmpty());
+
UnusedAlgorithmFinder.findUnusedShadowAlgorithm(rule.getConfiguration()).forEach(each
-> result.getShadowAlgorithms().put(each,
rule.getConfiguration().getShadowAlgorithms().get(each)));
return result;
}
@Override
- public ShadowRuleConfiguration buildToBeAlteredRuleConfiguration(final
DropShadowRuleStatement sqlStatement, final ShadowRuleConfiguration
currentRuleConfig) {
+ public ShadowRuleConfiguration buildToBeAlteredRuleConfiguration(final
DropShadowRuleStatement sqlStatement) {
Map<String, ShadowTableConfiguration> tables = new LinkedHashMap<>();
Collection<String> toBeDroppedDataSourceNames =
sqlStatement.getNames();
- for (Entry<String, ShadowTableConfiguration> each :
currentRuleConfig.getTables().entrySet()) {
+ for (Entry<String, ShadowTableConfiguration> each :
rule.getConfiguration().getTables().entrySet()) {
if
(!toBeDroppedDataSourceNames.containsAll(each.getValue().getDataSourceNames()))
{
List<String> currentDataSources = new
LinkedList<>(each.getValue().getDataSourceNames());
currentDataSources.removeAll(toBeDroppedDataSourceNames);
@@ -107,7 +107,7 @@ public final class DropShadowRuleExecutor implements
DatabaseRuleDropExecutor<Dr
@Override
public boolean updateCurrentRuleConfiguration(final
DropShadowRuleStatement sqlStatement, final ShadowRuleConfiguration
currentRuleConfig) {
for (String each : sqlStatement.getNames()) {
- dropRule(currentRuleConfig, each);
+ dropRule(each);
}
currentRuleConfig.getTables().forEach((key, value) ->
value.getDataSourceNames().removeIf(sqlStatement.getNames()::contains));
currentRuleConfig.getTables().entrySet().removeIf(entry ->
entry.getValue().getDataSourceNames().isEmpty());
@@ -115,9 +115,9 @@ public final class DropShadowRuleExecutor implements
DatabaseRuleDropExecutor<Dr
return currentRuleConfig.isEmpty();
}
- private void dropRule(final ShadowRuleConfiguration currentRuleConfig,
final String ruleName) {
- Optional<ShadowDataSourceConfiguration> dataSourceRuleConfig =
currentRuleConfig.getDataSources().stream().filter(each ->
ruleName.equals(each.getName())).findAny();
- dataSourceRuleConfig.ifPresent(optional ->
currentRuleConfig.getDataSources().remove(optional));
+ private void dropRule(final String ruleName) {
+ Optional<ShadowDataSourceConfiguration> dataSourceRuleConfig =
rule.getConfiguration().getDataSources().stream().filter(each ->
ruleName.equals(each.getName())).findAny();
+ dataSourceRuleConfig.ifPresent(optional ->
rule.getConfiguration().getDataSources().remove(optional));
}
private void dropUnusedAlgorithm(final ShadowRuleConfiguration
currentRuleConfig) {
diff --git
a/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/update/DropDefaultShadowAlgorithmExecutorTest.java
b/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/update/DropDefaultShadowAlgorithmExecutorTest.java
index 873080cced6..ae6fb62f081 100644
---
a/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/update/DropDefaultShadowAlgorithmExecutorTest.java
+++
b/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/update/DropDefaultShadowAlgorithmExecutorTest.java
@@ -68,9 +68,12 @@ class DropDefaultShadowAlgorithmExecutorTest {
ShadowRuleConfiguration ruleConfig = new ShadowRuleConfiguration();
ruleConfig.setDefaultShadowAlgorithmName("default");
ruleConfig.getShadowAlgorithms().put(ruleConfig.getDefaultShadowAlgorithmName(),
mock(AlgorithmConfiguration.class));
+ ShadowRule rule = mock(ShadowRule.class);
+ when(rule.getConfiguration()).thenReturn(ruleConfig);
+ executor.setRule(rule);
executor.checkBeforeUpdate(new
DropDefaultShadowAlgorithmStatement(true));
DropDefaultShadowAlgorithmStatement sqlStatement = new
DropDefaultShadowAlgorithmStatement(false);
- assertTrue(executor.hasAnyOneToBeDropped(sqlStatement, ruleConfig));
+ assertTrue(executor.hasAnyOneToBeDropped(sqlStatement));
executor.updateCurrentRuleConfiguration(sqlStatement, ruleConfig);
assertNull(ruleConfig.getDefaultShadowAlgorithmName());
assertTrue(ruleConfig.getShadowAlgorithms().isEmpty());
diff --git
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultShardingStrategyExecutor.java
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultShardingStrategyExecutor.java
index 57f4dfa2fa9..bfca5df509f 100644
---
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultShardingStrategyExecutor.java
+++
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultShardingStrategyExecutor.java
@@ -63,24 +63,24 @@ public final class DropDefaultShardingStrategyExecutor
implements DatabaseRuleDr
}
@Override
- public boolean hasAnyOneToBeDropped(final
DropDefaultShardingStrategyStatement sqlStatement, final
ShardingRuleConfiguration currentRuleConfig) {
+ public boolean hasAnyOneToBeDropped(final
DropDefaultShardingStrategyStatement sqlStatement) {
if
(sqlStatement.getDefaultType().equalsIgnoreCase(ShardingStrategyLevelType.TABLE.name()))
{
- return null != currentRuleConfig && null !=
currentRuleConfig.getDefaultTableShardingStrategy();
+ return null != rule && null !=
rule.getConfiguration().getDefaultTableShardingStrategy();
}
- return null != currentRuleConfig && null !=
currentRuleConfig.getDefaultDatabaseShardingStrategy();
+ return null != rule && null !=
rule.getConfiguration().getDefaultDatabaseShardingStrategy();
}
@Override
- public ShardingRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropDefaultShardingStrategyStatement sqlStatement, final
ShardingRuleConfiguration currentRuleConfig) {
+ public ShardingRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropDefaultShardingStrategyStatement sqlStatement) {
ShardingRuleConfiguration result = new ShardingRuleConfiguration();
if
(sqlStatement.getDefaultType().equalsIgnoreCase(ShardingStrategyLevelType.TABLE.name()))
{
-
result.setDefaultTableShardingStrategy(currentRuleConfig.getDefaultTableShardingStrategy());
- currentRuleConfig.setDefaultTableShardingStrategy(null);
+
result.setDefaultTableShardingStrategy(rule.getConfiguration().getDefaultTableShardingStrategy());
+ rule.getConfiguration().setDefaultTableShardingStrategy(null);
} else {
-
result.setDefaultDatabaseShardingStrategy(currentRuleConfig.getDefaultDatabaseShardingStrategy());
- currentRuleConfig.setDefaultDatabaseShardingStrategy(null);
+
result.setDefaultDatabaseShardingStrategy(rule.getConfiguration().getDefaultDatabaseShardingStrategy());
+ rule.getConfiguration().setDefaultDatabaseShardingStrategy(null);
}
-
UnusedAlgorithmFinder.findUnusedShardingAlgorithm(currentRuleConfig).forEach(each
-> result.getShardingAlgorithms().put(each,
currentRuleConfig.getShardingAlgorithms().get(each)));
+
UnusedAlgorithmFinder.findUnusedShardingAlgorithm(rule.getConfiguration()).forEach(each
-> result.getShardingAlgorithms().put(each,
rule.getConfiguration().getShardingAlgorithms().get(each)));
return result;
}
diff --git
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingAlgorithmExecutor.java
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingAlgorithmExecutor.java
index 1fbca2f9236..5eb547c63ed 100644
---
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingAlgorithmExecutor.java
+++
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingAlgorithmExecutor.java
@@ -93,10 +93,10 @@ public final class DropShardingAlgorithmExecutor implements
DatabaseRuleDropExec
}
@Override
- public ShardingRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropShardingAlgorithmStatement sqlStatement, final ShardingRuleConfiguration
currentRuleConfig) {
+ public ShardingRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropShardingAlgorithmStatement sqlStatement) {
ShardingRuleConfiguration result = new ShardingRuleConfiguration();
for (String each : sqlStatement.getNames()) {
- result.getShardingAlgorithms().put(each,
currentRuleConfig.getShardingAlgorithms().get(each));
+ result.getShardingAlgorithms().put(each,
rule.getConfiguration().getShardingAlgorithms().get(each));
}
return result;
}
@@ -110,8 +110,8 @@ public final class DropShardingAlgorithmExecutor implements
DatabaseRuleDropExec
}
@Override
- public boolean hasAnyOneToBeDropped(final DropShardingAlgorithmStatement
sqlStatement, final ShardingRuleConfiguration currentRuleConfig) {
- return null != currentRuleConfig &&
!getIdenticalData(getCurrentShardingAlgorithms(),
sqlStatement.getNames()).isEmpty();
+ public boolean hasAnyOneToBeDropped(final DropShardingAlgorithmStatement
sqlStatement) {
+ return null != rule &&
!getIdenticalData(getCurrentShardingAlgorithms(),
sqlStatement.getNames()).isEmpty();
}
private void dropShardingAlgorithm(final String algorithmName) {
diff --git
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingAuditorExecutor.java
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingAuditorExecutor.java
index 6b0a337fee4..6a8148021a0 100644
---
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingAuditorExecutor.java
+++
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingAuditorExecutor.java
@@ -75,10 +75,10 @@ public final class DropShardingAuditorExecutor implements
DatabaseRuleDropExecut
}
@Override
- public ShardingRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropShardingAuditorStatement sqlStatement, final ShardingRuleConfiguration
currentRuleConfig) {
+ public ShardingRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropShardingAuditorStatement sqlStatement) {
ShardingRuleConfiguration result = new ShardingRuleConfiguration();
for (String each : sqlStatement.getNames()) {
- result.getAuditors().put(each,
currentRuleConfig.getAuditors().get(each));
+ result.getAuditors().put(each,
rule.getConfiguration().getAuditors().get(each));
}
return result;
}
@@ -90,8 +90,8 @@ public final class DropShardingAuditorExecutor implements
DatabaseRuleDropExecut
}
@Override
- public boolean hasAnyOneToBeDropped(final DropShardingAuditorStatement
sqlStatement, final ShardingRuleConfiguration currentRuleConfig) {
- return null != currentRuleConfig &&
!getIdenticalData(currentRuleConfig.getAuditors().keySet(),
sqlStatement.getNames()).isEmpty();
+ public boolean hasAnyOneToBeDropped(final DropShardingAuditorStatement
sqlStatement) {
+ return null != rule &&
!getIdenticalData(rule.getConfiguration().getAuditors().keySet(),
sqlStatement.getNames()).isEmpty();
}
@Override
diff --git
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingKeyGeneratorExecutor.java
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingKeyGeneratorExecutor.java
index eefc6e7b1be..466309d4f1e 100644
---
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingKeyGeneratorExecutor.java
+++
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingKeyGeneratorExecutor.java
@@ -76,10 +76,10 @@ public final class DropShardingKeyGeneratorExecutor
implements DatabaseRuleDropE
}
@Override
- public ShardingRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropShardingKeyGeneratorStatement sqlStatement, final ShardingRuleConfiguration
currentRuleConfig) {
+ public ShardingRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropShardingKeyGeneratorStatement sqlStatement) {
ShardingRuleConfiguration result = new ShardingRuleConfiguration();
for (String each : sqlStatement.getNames()) {
- result.getKeyGenerators().put(each,
currentRuleConfig.getKeyGenerators().get(each));
+ result.getKeyGenerators().put(each,
rule.getConfiguration().getKeyGenerators().get(each));
}
return result;
}
@@ -91,8 +91,8 @@ public final class DropShardingKeyGeneratorExecutor
implements DatabaseRuleDropE
}
@Override
- public boolean hasAnyOneToBeDropped(final
DropShardingKeyGeneratorStatement sqlStatement, final ShardingRuleConfiguration
currentRuleConfig) {
- return null != currentRuleConfig &&
!getIdenticalData(currentRuleConfig.getKeyGenerators().keySet(),
sqlStatement.getNames()).isEmpty();
+ public boolean hasAnyOneToBeDropped(final
DropShardingKeyGeneratorStatement sqlStatement) {
+ return null != rule &&
!getIdenticalData(rule.getConfiguration().getKeyGenerators().keySet(),
sqlStatement.getNames()).isEmpty();
}
@Override
diff --git
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableReferenceExecutor.java
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableReferenceExecutor.java
index 6bcf79ad861..6468e705691 100644
---
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableReferenceExecutor.java
+++
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableReferenceExecutor.java
@@ -69,7 +69,7 @@ public final class DropShardingTableReferenceExecutor
implements DatabaseRuleDro
}
@Override
- public ShardingRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropShardingTableReferenceRuleStatement sqlStatement, final
ShardingRuleConfiguration currentRuleConfig) {
+ public ShardingRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropShardingTableReferenceRuleStatement sqlStatement) {
ShardingRuleConfiguration result = new ShardingRuleConfiguration();
for (String each : sqlStatement.getNames()) {
result.getBindingTableGroups().add(new
ShardingTableReferenceRuleConfiguration(each, ""));
@@ -84,8 +84,8 @@ public final class DropShardingTableReferenceExecutor
implements DatabaseRuleDro
}
@Override
- public boolean hasAnyOneToBeDropped(final
DropShardingTableReferenceRuleStatement sqlStatement, final
ShardingRuleConfiguration currentRuleConfig) {
- return isExistRuleConfig(currentRuleConfig) &&
!getIdenticalData(getCurrentShardingTableReferenceRuleNames(),
sqlStatement.getNames()).isEmpty();
+ public boolean hasAnyOneToBeDropped(final
DropShardingTableReferenceRuleStatement sqlStatement) {
+ return isExistRuleConfig(rule.getConfiguration()) &&
!getIdenticalData(getCurrentShardingTableReferenceRuleNames(),
sqlStatement.getNames()).isEmpty();
}
@Override
diff --git
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleExecutor.java
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleExecutor.java
index c864438ced9..1fa4915cfc7 100644
---
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleExecutor.java
+++
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleExecutor.java
@@ -92,28 +92,29 @@ public final class DropShardingTableRuleExecutor implements
DatabaseRuleDropExec
}
@Override
- public boolean hasAnyOneToBeDropped(final DropShardingTableRuleStatement
sqlStatement, final ShardingRuleConfiguration currentRuleConfig) {
- if (null == currentRuleConfig) {
+ public boolean hasAnyOneToBeDropped(final DropShardingTableRuleStatement
sqlStatement) {
+ if (null == rule) {
return false;
}
Collection<String> currentTableNames = new LinkedList<>();
-
currentTableNames.addAll(currentRuleConfig.getTables().stream().map(ShardingTableRuleConfiguration::getLogicTable).collect(Collectors.toSet()));
-
currentTableNames.addAll(currentRuleConfig.getAutoTables().stream().map(ShardingAutoTableRuleConfiguration::getLogicTable).collect(Collectors.toSet()));
+
currentTableNames.addAll(rule.getConfiguration().getTables().stream().map(ShardingTableRuleConfiguration::getLogicTable).collect(Collectors.toSet()));
+
currentTableNames.addAll(rule.getConfiguration().getAutoTables().stream().map(ShardingAutoTableRuleConfiguration::getLogicTable).collect(Collectors.toSet()));
return !getIdenticalData(currentTableNames,
sqlStatement.getTableNames().stream().map(each ->
each.getIdentifier().getValue()).collect(Collectors.toSet())).isEmpty();
}
@Override
- public ShardingRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropShardingTableRuleStatement sqlStatement, final ShardingRuleConfiguration
currentRuleConfig) {
+ public ShardingRuleConfiguration buildToBeDroppedRuleConfiguration(final
DropShardingTableRuleStatement sqlStatement) {
ShardingRuleConfiguration result = new ShardingRuleConfiguration();
Collection<String> toBeDroppedShardingTableNames =
getToBeDroppedShardingTableNames(sqlStatement);
for (String each : toBeDroppedShardingTableNames) {
-
result.getTables().addAll(currentRuleConfig.getTables().stream().filter(table
-> each.equalsIgnoreCase(table.getLogicTable())).collect(Collectors.toList()));
-
result.getAutoTables().addAll(currentRuleConfig.getAutoTables().stream().filter(table
-> each.equalsIgnoreCase(table.getLogicTable())).collect(Collectors.toList()));
- dropShardingTable(currentRuleConfig, each);
+
result.getTables().addAll(rule.getConfiguration().getTables().stream().filter(table
-> each.equalsIgnoreCase(table.getLogicTable())).collect(Collectors.toList()));
+
result.getAutoTables().addAll(rule.getConfiguration().getAutoTables().stream().filter(table
-> each.equalsIgnoreCase(table.getLogicTable())).collect(Collectors.toList()));
+ dropShardingTable(rule.getConfiguration(), each);
}
-
UnusedAlgorithmFinder.findUnusedShardingAlgorithm(currentRuleConfig).forEach(each
-> result.getShardingAlgorithms().put(each,
currentRuleConfig.getShardingAlgorithms().get(each)));
-
UnusedAlgorithmFinder.findUnusedKeyGenerator(currentRuleConfig).forEach(each ->
result.getKeyGenerators().put(each,
currentRuleConfig.getKeyGenerators().get(each)));
-
UnusedAlgorithmFinder.findUnusedAuditor(currentRuleConfig).forEach(each ->
result.getAuditors().put(each, currentRuleConfig.getAuditors().get(each)));
+ UnusedAlgorithmFinder.findUnusedShardingAlgorithm(
+ rule.getConfiguration()).forEach(each ->
result.getShardingAlgorithms().put(each,
rule.getConfiguration().getShardingAlgorithms().get(each)));
+
UnusedAlgorithmFinder.findUnusedKeyGenerator(rule.getConfiguration()).forEach(each
-> result.getKeyGenerators().put(each,
rule.getConfiguration().getKeyGenerators().get(each)));
+
UnusedAlgorithmFinder.findUnusedAuditor(rule.getConfiguration()).forEach(each
-> result.getAuditors().put(each,
rule.getConfiguration().getAuditors().get(each)));
return result;
}
diff --git
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableReferenceExecutorTest.java
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableReferenceExecutorTest.java
index 88ff376b611..9cbd5a74346 100644
---
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableReferenceExecutorTest.java
+++
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableReferenceExecutorTest.java
@@ -77,7 +77,7 @@ class DropShardingTableReferenceExecutorTest {
ShardingRule rule = mock(ShardingRule.class);
when(rule.getConfiguration()).thenReturn(currentRuleConfig);
executor.setRule(rule);
- assertTrue(executor.hasAnyOneToBeDropped(sqlStatement,
currentRuleConfig));
+ assertTrue(executor.hasAnyOneToBeDropped(sqlStatement));
}
private ShardingRuleConfiguration createCurrentRuleConfiguration() {
@@ -95,7 +95,7 @@ class DropShardingTableReferenceExecutorTest {
ShardingRule rule = mock(ShardingRule.class);
when(rule.getConfiguration()).thenReturn(currentRuleConfig);
executor.setRule(rule);
- assertFalse(executor.hasAnyOneToBeDropped(sqlStatement,
currentRuleConfig));
+ assertFalse(executor.hasAnyOneToBeDropped(sqlStatement));
}
@Test
diff --git
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rdl/rule/engine/database/DatabaseRuleDefinitionExecuteEngine.java
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rdl/rule/engine/database/DatabaseRuleDefinitionExecuteEngine.java
index 8577da3e065..55cdec10a9f 100644
---
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rdl/rule/engine/database/DatabaseRuleDefinitionExecuteEngine.java
+++
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rdl/rule/engine/database/DatabaseRuleDefinitionExecuteEngine.java
@@ -57,7 +57,7 @@ public final class DatabaseRuleDefinitionExecuteEngine {
executor.setRule(rule.orElse(null));
checkBeforeUpdate(rule.orElse(null));
RuleConfiguration currentRuleConfig =
rule.map(ShardingSphereRule::getConfiguration).orElse(null);
- if (getRefreshStatus(currentRuleConfig)) {
+ if (getRefreshStatus()) {
contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService()
.switchActiveVersion(DatabaseRuleOperatorFactory.newInstance(contextManager,
executor).operate(sqlStatement, database, currentRuleConfig));
}
@@ -77,7 +77,7 @@ public final class DatabaseRuleDefinitionExecuteEngine {
}
@SuppressWarnings({"rawtypes", "unchecked"})
- private boolean getRefreshStatus(final RuleConfiguration
currentRuleConfig) {
- return !(executor instanceof DatabaseRuleDropExecutor) ||
((DatabaseRuleDropExecutor) executor).hasAnyOneToBeDropped(sqlStatement,
currentRuleConfig);
+ private boolean getRefreshStatus() {
+ return !(executor instanceof DatabaseRuleDropExecutor) ||
((DatabaseRuleDropExecutor) executor).hasAnyOneToBeDropped(sqlStatement);
}
}
diff --git
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java
index b773b23c0f4..c46229005b0 100644
---
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java
+++
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java
@@ -48,18 +48,18 @@ public final class DropDatabaseRuleOperator implements
DatabaseRuleOperator {
@Override
@SuppressWarnings("unchecked")
public Collection<MetaDataVersion> operate(final RuleDefinitionStatement
sqlStatement, final ShardingSphereDatabase database, final RuleConfiguration
currentRuleConfig) {
- if (!executor.hasAnyOneToBeDropped(sqlStatement, currentRuleConfig)) {
+ if (!executor.hasAnyOneToBeDropped(sqlStatement)) {
return Collections.emptyList();
}
ModeContextManager modeContextManager =
contextManager.getInstanceContext().getModeContextManager();
- RuleConfiguration toBeDroppedRuleConfig =
executor.buildToBeDroppedRuleConfiguration(sqlStatement, currentRuleConfig);
+ RuleConfiguration toBeDroppedRuleConfig =
executor.buildToBeDroppedRuleConfiguration(sqlStatement);
if (sqlStatement instanceof
StaticDataSourceContainedRuleAwareStatement) {
database.getRuleMetaData().findSingleRule(StaticDataSourceContainedRule.class)
.ifPresent(optional ->
((StaticDataSourceContainedRuleAwareStatement)
sqlStatement).getNames().forEach(optional::cleanStorageNodeDataSource));
// TODO refactor to new metadata refresh way
}
modeContextManager.removeRuleConfigurationItem(database.getName(),
toBeDroppedRuleConfig);
- RuleConfiguration toBeAlteredRuleConfig =
executor.buildToBeAlteredRuleConfiguration(sqlStatement, currentRuleConfig);
+ RuleConfiguration toBeAlteredRuleConfig =
executor.buildToBeAlteredRuleConfiguration(sqlStatement);
if (null != toBeAlteredRuleConfig && ((DatabaseRuleConfiguration)
toBeAlteredRuleConfig).isEmpty()) {
new
NewYamlRuleConfigurationSwapperEngine().swapToYamlRuleConfigurations(Collections.singleton(currentRuleConfig)).values().stream().findFirst()
.ifPresent(optional ->
modeContextManager.removeRuleConfiguration(database.getName(),
optional.getRuleTagName().toLowerCase()));
diff --git
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rdl/rule/spi/database/DatabaseRuleDropExecutor.java
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rdl/rule/spi/database/DatabaseRuleDropExecutor.java
index 7d9e577d2b9..0115adb7a98 100644
---
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rdl/rule/spi/database/DatabaseRuleDropExecutor.java
+++
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rdl/rule/spi/database/DatabaseRuleDropExecutor.java
@@ -39,10 +39,9 @@ public interface DatabaseRuleDropExecutor<T extends
SQLStatement, R extends Shar
* Build to be dropped rule configuration.
*
* @param sqlStatement SQL statement
- * @param currentRuleConfig current rule configuration to be updated
* @return to be dropped rule configuration
*/
- default C buildToBeDroppedRuleConfiguration(final T sqlStatement, final C
currentRuleConfig) {
+ default C buildToBeDroppedRuleConfiguration(final T sqlStatement) {
return null;
}
@@ -50,10 +49,9 @@ public interface DatabaseRuleDropExecutor<T extends
SQLStatement, R extends Shar
* Build to be altered rule configuration.
*
* @param sqlStatement SQL statement
- * @param currentRuleConfig current rule configuration to be updated
* @return to be altered rule configuration
*/
- default C buildToBeAlteredRuleConfiguration(final T sqlStatement, final C
currentRuleConfig) {
+ default C buildToBeAlteredRuleConfiguration(final T sqlStatement) {
return null;
}
@@ -81,10 +79,9 @@ public interface DatabaseRuleDropExecutor<T extends
SQLStatement, R extends Shar
* Whether there is dropped data.
*
* @param sqlStatement SQL statement
- * @param currentRuleConfig current rule configuration
* @return dropped data exists or does not exist
*/
- default boolean hasAnyOneToBeDropped(final T sqlStatement, final C
currentRuleConfig) {
+ default boolean hasAnyOneToBeDropped(final T sqlStatement) {
return true;
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/legacy/LegacyDatabaseRuleDefinitionExecuteEngine.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/legacy/LegacyDatabaseRuleDefinitionExecuteEngine.java
index 19771930efb..10877490bbe 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/legacy/LegacyDatabaseRuleDefinitionExecuteEngine.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/legacy/LegacyDatabaseRuleDefinitionExecuteEngine.java
@@ -69,7 +69,7 @@ public final class LegacyDatabaseRuleDefinitionExecuteEngine {
executor.setRule(rule.orElse(null));
checkBeforeUpdate(rule.orElse(null));
RuleConfiguration currentRuleConfig =
rule.map(ShardingSphereRule::getConfiguration).orElse(null);
- if (getRefreshStatus(sqlStatement, currentRuleConfig, executor)) {
+ if (getRefreshStatus(sqlStatement, executor)) {
contextManager.getInstanceContext().getModeContextManager().alterRuleConfiguration(database.getName(),
processSQLStatement(database, sqlStatement, executor, currentRuleConfig));
}
}
@@ -88,8 +88,8 @@ public final class LegacyDatabaseRuleDefinitionExecuteEngine {
}
@SuppressWarnings({"unchecked", "rawtypes"})
- private boolean getRefreshStatus(final SQLStatement sqlStatement, final
RuleConfiguration currentRuleConfig, final DatabaseRuleDefinitionExecutor<?, ?>
executor) {
- return !(executor instanceof DatabaseRuleDropExecutor) ||
((DatabaseRuleDropExecutor) executor).hasAnyOneToBeDropped(sqlStatement,
currentRuleConfig);
+ private boolean getRefreshStatus(final SQLStatement sqlStatement, final
DatabaseRuleDefinitionExecutor<?, ?> executor) {
+ return !(executor instanceof DatabaseRuleDropExecutor) ||
((DatabaseRuleDropExecutor) executor).hasAnyOneToBeDropped(sqlStatement);
}
@SuppressWarnings("rawtypes")
@@ -134,7 +134,7 @@ public final class
LegacyDatabaseRuleDefinitionExecuteEngine {
@SuppressWarnings({"rawtypes", "unchecked"})
private void processDrop(final ShardingSphereDatabase database, final
Collection<RuleConfiguration> configs, final RuleDefinitionStatement
sqlStatement,
final DatabaseRuleDropExecutor executor, final
RuleConfiguration currentRuleConfig) {
- if (!executor.hasAnyOneToBeDropped(sqlStatement, currentRuleConfig)) {
+ if (!executor.hasAnyOneToBeDropped(sqlStatement)) {
return;
}
if (executor.updateCurrentRuleConfiguration(sqlStatement,
currentRuleConfig)) {