This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new ea03871 Refactor RDLAlterUpdater.buildToBeAlteredRuleConfiguration()
(#11151)
ea03871 is described below
commit ea03871547a90a0542096ea715f999466c47412e
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Jul 4 21:25:58 2021 +0800
Refactor RDLAlterUpdater.buildToBeAlteredRuleConfiguration() (#11151)
---
...AlterDatabaseDiscoveryRuleStatementUpdater.java | 27 ++++++++++++-------
...rDatabaseDiscoveryRuleStatementUpdaterTest.java | 6 -----
.../update/AlterEncryptRuleStatementUpdater.java | 31 +++++++++++++---------
.../AlterEncryptRuleStatementUpdaterTest.java | 6 -----
...lterReadwriteSplittingRuleStatementUpdater.java | 25 ++++++++++-------
...ReadwriteSplittingRuleStatementUpdaterTest.java | 6 -----
...erShardingBindingTableRuleStatementUpdater.java | 22 ++++++++++-----
...ShardingBroadcastTableRuleStatementUpdater.java | 17 ++++++++----
.../AlterShardingTableRuleStatementUpdater.java | 27 +++++++++++--------
...ardingBindingTableRuleStatementUpdaterTest.java | 6 -----
...dingBroadcastTableRuleStatementUpdaterTest.java | 19 +++----------
...AlterShardingTableRuleStatementUpdaterTest.java | 6 -----
.../infra/distsql/update/RDLAlterUpdater.java | 14 +++++++---
.../text/distsql/rdl/RDLBackendHandler.java | 3 ++-
14 files changed, 109 insertions(+), 106 deletions(-)
diff --git
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabaseDiscoveryRuleStatementUpdater.java
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabaseDis
[...]
index cbc98c5..2ddf53b 100644
---
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabaseDiscoveryRuleStatementUpdater.java
+++
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabaseDiscoveryRuleStatementUpdater.java
@@ -24,11 +24,12 @@ import
org.apache.shardingsphere.dbdiscovery.distsql.handler.converter.DatabaseD
import
org.apache.shardingsphere.dbdiscovery.distsql.parser.segment.DatabaseDiscoveryRuleSegment;
import
org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.AlterDatabaseDiscoveryRuleStatement;
import org.apache.shardingsphere.dbdiscovery.spi.DatabaseDiscoveryType;
-import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
+import org.apache.shardingsphere.infra.config.RuleConfiguration;
import org.apache.shardingsphere.infra.distsql.exception.DistSQLException;
import
org.apache.shardingsphere.infra.distsql.exception.resource.RequiredResourceMissedException;
-import
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
import
org.apache.shardingsphere.infra.distsql.exception.rule.InvalidAlgorithmConfigurationException;
+import
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
+import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
import
org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import org.apache.shardingsphere.infra.spi.typed.TypedSPIRegistry;
@@ -104,16 +105,23 @@ public final class
AlterDatabaseDiscoveryRuleStatementUpdater implements RDLAlte
}
@Override
- public void updateCurrentRuleConfiguration(final
AlterDatabaseDiscoveryRuleStatement sqlStatement, final
DatabaseDiscoveryRuleConfiguration currentRuleConfig) {
- dropRuleConfiguration(sqlStatement, currentRuleConfig);
- addRuleConfiguration(sqlStatement, currentRuleConfig);
+ public RuleConfiguration buildToBeAlteredRuleConfiguration(final
AlterDatabaseDiscoveryRuleStatement sqlStatement) {
+ return
DatabaseDiscoveryRuleStatementConverter.convert(sqlStatement.getRules());
}
- private void dropRuleConfiguration(final
AlterDatabaseDiscoveryRuleStatement sqlStatement, final
DatabaseDiscoveryRuleConfiguration currentRuleConfig) {
- getToBeAlteredRuleNames(sqlStatement).forEach(each ->
dropDataSourceRuleConfiguration(each, currentRuleConfig));
+ @Override
+ public void updateCurrentRuleConfiguration(final
DatabaseDiscoveryRuleConfiguration currentRuleConfig, final
DatabaseDiscoveryRuleConfiguration toBeAlteredRuleConfig) {
+ dropRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
+ addRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
+ }
+
+ private void dropRuleConfiguration(final
DatabaseDiscoveryRuleConfiguration currentRuleConfig, final
DatabaseDiscoveryRuleConfiguration toBeAlteredRuleConfig) {
+ for (DatabaseDiscoveryDataSourceRuleConfiguration each :
toBeAlteredRuleConfig.getDataSources()) {
+ dropDataSourceRuleConfiguration(currentRuleConfig, each.getName());
+ }
}
- private void dropDataSourceRuleConfiguration(final String
toBeDroppedRuleNames, final DatabaseDiscoveryRuleConfiguration
currentRuleConfig) {
+ private void dropDataSourceRuleConfiguration(final
DatabaseDiscoveryRuleConfiguration currentRuleConfig, final String
toBeDroppedRuleNames) {
Optional<DatabaseDiscoveryDataSourceRuleConfiguration>
toBeDroppedDataSourceRuleConfig
= currentRuleConfig.getDataSources().stream().filter(each ->
each.getName().equals(toBeDroppedRuleNames)).findAny();
Preconditions.checkState(toBeDroppedDataSourceRuleConfig.isPresent());
@@ -121,8 +129,7 @@ public final class
AlterDatabaseDiscoveryRuleStatementUpdater implements RDLAlte
currentRuleConfig.getDiscoveryTypes().remove(toBeDroppedDataSourceRuleConfig.get().getDiscoveryTypeName());
}
- private void addRuleConfiguration(final
AlterDatabaseDiscoveryRuleStatement sqlStatement, final
DatabaseDiscoveryRuleConfiguration currentRuleConfig) {
- DatabaseDiscoveryRuleConfiguration toBeAlteredRuleConfig =
DatabaseDiscoveryRuleStatementConverter.convert(sqlStatement.getRules());
+ private void addRuleConfiguration(final DatabaseDiscoveryRuleConfiguration
currentRuleConfig, final DatabaseDiscoveryRuleConfiguration
toBeAlteredRuleConfig) {
currentRuleConfig.getDataSources().addAll(toBeAlteredRuleConfig.getDataSources());
currentRuleConfig.getDiscoveryTypes().putAll(toBeAlteredRuleConfig.getDiscoveryTypes());
}
diff --git
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabaseDiscoveryRuleStatementUpdaterTest.java
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabas
[...]
index be6c05b..cbe0be13 100644
---
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabaseDiscoveryRuleStatementUpdaterTest.java
+++
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabaseDiscoveryRuleStatementUpdaterTest.java
@@ -65,12 +65,6 @@ public final class
AlterDatabaseDiscoveryRuleStatementUpdaterTest {
updater.checkSQLStatement("foo", createSQLStatement("INVALID_TYPE"),
createCurrentRuleConfiguration(), mock(ShardingSphereResource.class));
}
- @Test
- public void assertUpdateCurrentRuleConfiguration() {
- updater.updateCurrentRuleConfiguration(createSQLStatement("TEST"),
createCurrentRuleConfiguration());
- // TODO assert current rule configuration
- }
-
private AlterDatabaseDiscoveryRuleStatement createSQLStatement(final
String discoveryTypeName) {
DatabaseDiscoveryRuleSegment ruleSegment = new
DatabaseDiscoveryRuleSegment("ha_group", Arrays.asList("ds_0", "ds_1"),
discoveryTypeName, new Properties());
return new
AlterDatabaseDiscoveryRuleStatement(Collections.singleton(ruleSegment));
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.java
index d213529..f983ce7 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.java
@@ -24,10 +24,11 @@ import
org.apache.shardingsphere.encrypt.distsql.handler.converter.EncryptRuleSt
import
org.apache.shardingsphere.encrypt.distsql.parser.segment.EncryptRuleSegment;
import
org.apache.shardingsphere.encrypt.distsql.parser.statement.AlterEncryptRuleStatement;
import org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm;
-import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
-import
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
+import org.apache.shardingsphere.infra.config.RuleConfiguration;
import
org.apache.shardingsphere.infra.distsql.exception.rule.InvalidAlgorithmConfigurationException;
+import
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
import
org.apache.shardingsphere.infra.distsql.exception.rule.RuleDefinitionViolationException;
+import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
import
org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import org.apache.shardingsphere.infra.spi.typed.TypedSPIRegistry;
@@ -87,22 +88,26 @@ public final class AlterEncryptRuleStatementUpdater
implements RDLAlterUpdater<A
}
@Override
- public void updateCurrentRuleConfiguration(final AlterEncryptRuleStatement
sqlStatement, final EncryptRuleConfiguration currentRuleConfig) {
- dropRuleConfiguration(sqlStatement, currentRuleConfig);
- addRuleConfiguration(sqlStatement, currentRuleConfig);
+ public RuleConfiguration buildToBeAlteredRuleConfiguration(final
AlterEncryptRuleStatement sqlStatement) {
+ return EncryptRuleStatementConverter.convert(sqlStatement.getRules());
+ }
+
+ @Override
+ public void updateCurrentRuleConfiguration(final EncryptRuleConfiguration
currentRuleConfig, final EncryptRuleConfiguration toBeAlteredRuleConfig) {
+ dropRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
+ addRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
}
- private void dropRuleConfiguration(final AlterEncryptRuleStatement
sqlStatement, final EncryptRuleConfiguration currentRuleConfig) {
- for (String each : getToBeAlteredEncryptTableNames(sqlStatement)) {
- Optional<EncryptTableRuleConfiguration>
toBeRemovedEncryptTableRuleConfig =
currentRuleConfig.getTables().stream().filter(tableRule ->
tableRule.getName().equals(each)).findAny();
-
Preconditions.checkState(toBeRemovedEncryptTableRuleConfig.isPresent());
-
currentRuleConfig.getTables().remove(toBeRemovedEncryptTableRuleConfig.get());
-
toBeRemovedEncryptTableRuleConfig.get().getColumns().forEach(column ->
currentRuleConfig.getEncryptors().remove(column.getEncryptorName()));
+ private void dropRuleConfiguration(final EncryptRuleConfiguration
currentRuleConfig, final EncryptRuleConfiguration toBeAlteredRuleConfig) {
+ for (EncryptTableRuleConfiguration each :
toBeAlteredRuleConfig.getTables()) {
+ Optional<EncryptTableRuleConfiguration> toBeRemovedTableRuleConfig
= currentRuleConfig.getTables().stream().filter(tableRule ->
tableRule.getName().equals(each.getName())).findAny();
+ Preconditions.checkState(toBeRemovedTableRuleConfig.isPresent());
+
currentRuleConfig.getTables().remove(toBeRemovedTableRuleConfig.get());
+ toBeRemovedTableRuleConfig.get().getColumns().forEach(column ->
currentRuleConfig.getEncryptors().remove(column.getEncryptorName()));
}
}
- private void addRuleConfiguration(final AlterEncryptRuleStatement
sqlStatement, final EncryptRuleConfiguration currentRuleConfig) {
- EncryptRuleConfiguration toBeAlteredRuleConfig =
EncryptRuleStatementConverter.convert(sqlStatement.getRules());
+ private void addRuleConfiguration(final EncryptRuleConfiguration
currentRuleConfig, final EncryptRuleConfiguration toBeAlteredRuleConfig) {
currentRuleConfig.getTables().addAll(toBeAlteredRuleConfig.getTables());
currentRuleConfig.getEncryptors().putAll(toBeAlteredRuleConfig.getEncryptors());
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdaterTest.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdaterTest.java
index 4e674d3..10ac9b9 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdaterTest.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdaterTest.java
@@ -55,12 +55,6 @@ public final class AlterEncryptRuleStatementUpdaterTest {
updater.checkSQLStatement("foo", createSQLStatement("INVALID_TYPE"),
createCurrentRuleConfiguration(), mock(ShardingSphereResource.class));
}
- @Test
- public void assertUpdateCurrentRuleConfiguration() {
- updater.updateCurrentRuleConfiguration(createSQLStatement("MD5"),
createCurrentRuleConfiguration());
- // TODO assert current rule configuration
- }
-
private AlterEncryptRuleStatement createSQLStatement(final String
encryptorName) {
EncryptColumnSegment columnSegment = new
EncryptColumnSegment("user_id", "user_cipher", "user_plain", new
AlgorithmSegment(encryptorName, new Properties()));
EncryptRuleSegment ruleSegment = new EncryptRuleSegment("t_encrypt",
Collections.singleton(columnSegment));
diff --git
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleStatementUpdater.java
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/r
[...]
index 61ccaa6..034a7dc 100644
---
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleStatementUpdater.java
+++
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleStatementUpdater.java
@@ -19,11 +19,12 @@ package
org.apache.shardingsphere.readwritesplitting.distsql.handler.update;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
-import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
+import org.apache.shardingsphere.infra.config.RuleConfiguration;
import org.apache.shardingsphere.infra.distsql.exception.DistSQLException;
import
org.apache.shardingsphere.infra.distsql.exception.resource.RequiredResourceMissedException;
-import
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
import
org.apache.shardingsphere.infra.distsql.exception.rule.InvalidAlgorithmConfigurationException;
+import
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
+import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
import
org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import org.apache.shardingsphere.infra.spi.typed.TypedSPIRegistry;
@@ -100,23 +101,27 @@ public final class
AlterReadwriteSplittingRuleStatementUpdater implements RDLAlt
}
@Override
- public void updateCurrentRuleConfiguration(final
AlterReadwriteSplittingRuleStatement sqlStatement, final
ReadwriteSplittingRuleConfiguration currentRuleConfig) {
- dropRuleConfiguration(sqlStatement, currentRuleConfig);
- addRuleConfiguration(sqlStatement, currentRuleConfig);
+ public RuleConfiguration buildToBeAlteredRuleConfiguration(final
AlterReadwriteSplittingRuleStatement sqlStatement) {
+ return
ReadwriteSplittingRuleStatementConverter.convert(sqlStatement.getRules());
+ }
+
+ @Override
+ public void updateCurrentRuleConfiguration(final
ReadwriteSplittingRuleConfiguration currentRuleConfig, final
ReadwriteSplittingRuleConfiguration toBeAlteredRuleConfig) {
+ dropRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
+ addRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
}
- private void dropRuleConfiguration(final
AlterReadwriteSplittingRuleStatement sqlStatement, final
ReadwriteSplittingRuleConfiguration currentRuleConfig) {
- for (String each : getToBeAlteredRuleNames(sqlStatement)) {
+ private void dropRuleConfiguration(final
ReadwriteSplittingRuleConfiguration currentRuleConfig, final
ReadwriteSplittingRuleConfiguration toBeAlteredRuleConfig) {
+ for (ReadwriteSplittingDataSourceRuleConfiguration each :
toBeAlteredRuleConfig.getDataSources()) {
Optional<ReadwriteSplittingDataSourceRuleConfiguration>
toBeRemovedDataSourceRuleConfig
- =
currentRuleConfig.getDataSources().stream().filter(dataSource ->
each.equals(dataSource.getName())).findAny();
+ =
currentRuleConfig.getDataSources().stream().filter(dataSource ->
each.getName().equals(dataSource.getName())).findAny();
Preconditions.checkState(toBeRemovedDataSourceRuleConfig.isPresent());
currentRuleConfig.getDataSources().remove(toBeRemovedDataSourceRuleConfig.get());
currentRuleConfig.getLoadBalancers().remove(toBeRemovedDataSourceRuleConfig.get().getLoadBalancerName());
}
}
- private void addRuleConfiguration(final
AlterReadwriteSplittingRuleStatement sqlStatement, final
ReadwriteSplittingRuleConfiguration currentRuleConfig) {
- ReadwriteSplittingRuleConfiguration toBeAlteredRuleConfig =
ReadwriteSplittingRuleStatementConverter.convert(sqlStatement.getRules());
+ private void addRuleConfiguration(final
ReadwriteSplittingRuleConfiguration currentRuleConfig, final
ReadwriteSplittingRuleConfiguration toBeAlteredRuleConfig) {
currentRuleConfig.getDataSources().addAll(toBeAlteredRuleConfig.getDataSources());
currentRuleConfig.getLoadBalancers().putAll(toBeAlteredRuleConfig.getLoadBalancers());
}
diff --git
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleStatementUpdaterTest.java
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphe
[...]
index 4604f95..ae617e2 100644
---
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleStatementUpdaterTest.java
+++
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleStatementUpdaterTest.java
@@ -64,12 +64,6 @@ public final class
AlterReadwriteSplittingRuleStatementUpdaterTest {
updater.checkSQLStatement("foo", createSQLStatement("INVALID_TYPE"),
createCurrentRuleConfiguration(), mock(ShardingSphereResource.class));
}
- @Test
- public void assertUpdateCurrentRuleConfiguration() {
- updater.updateCurrentRuleConfiguration(createSQLStatement("TEST"),
createCurrentRuleConfiguration());
- // TODO assert current rule configuration
- }
-
private AlterReadwriteSplittingRuleStatement createSQLStatement(final
String loadBalancerTypeName) {
ReadwriteSplittingRuleSegment ruleSegment = new
ReadwriteSplittingRuleSegment("readwrite_ds", "write_ds",
Arrays.asList("read_ds_0", "ds_read_ds_1"), loadBalancerTypeName, new
Properties());
return new
AlterReadwriteSplittingRuleStatement(Collections.singleton(ruleSegment));
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingBindingTableRuleStatementUpdater.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingBindingTableRuleStatementUpdater.java
index 39c2427..2d98c9e 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingBindingTableRuleStatementUpdater.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingBindingTableRuleStatementUpdater.java
@@ -17,10 +17,11 @@
package org.apache.shardingsphere.sharding.distsql.handler.update;
-import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
+import org.apache.shardingsphere.infra.config.RuleConfiguration;
import
org.apache.shardingsphere.infra.distsql.exception.rule.DuplicateRuleException;
import
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
import
org.apache.shardingsphere.infra.distsql.exception.rule.RuleDefinitionViolationException;
+import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
import
org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
import
org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
@@ -76,19 +77,26 @@ public final class
AlterShardingBindingTableRuleStatementUpdater implements RDLA
}
@Override
- public void updateCurrentRuleConfiguration(final
AlterShardingBindingTableRulesStatement sqlStatement, final
ShardingRuleConfiguration currentRuleConfig) {
+ public RuleConfiguration buildToBeAlteredRuleConfiguration(final
AlterShardingBindingTableRulesStatement sqlStatement) {
+ ShardingRuleConfiguration result = new ShardingRuleConfiguration();
+ for (BindingTableRuleSegment each : sqlStatement.getRules()) {
+ result.getBindingTableGroups().add(each.getTableGroups());
+ }
+ return result;
+ }
+
+ @Override
+ public void updateCurrentRuleConfiguration(final ShardingRuleConfiguration
currentRuleConfig, final ShardingRuleConfiguration toBeAlteredRuleConfig) {
dropRuleConfiguration(currentRuleConfig);
- addRuleConfiguration(sqlStatement, currentRuleConfig);
+ addRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
}
private void dropRuleConfiguration(final ShardingRuleConfiguration
currentRuleConfig) {
currentRuleConfig.getBindingTableGroups().clear();
}
- private void addRuleConfiguration(final
AlterShardingBindingTableRulesStatement sqlStatement, final
ShardingRuleConfiguration currentRuleConfig) {
- for (BindingTableRuleSegment each : sqlStatement.getRules()) {
-
currentRuleConfig.getBindingTableGroups().add(each.getTableGroups());
- }
+ private void addRuleConfiguration(final ShardingRuleConfiguration
currentRuleConfig, final ShardingRuleConfiguration toBeAlteredRuleConfig) {
+
currentRuleConfig.getBindingTableGroups().addAll(toBeAlteredRuleConfig.getBindingTableGroups());
}
@Override
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingBroadcastTableRuleStatementUpdater.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingBroadcastTableRuleStatementU
[...]
index 507e960..b85c168 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingBroadcastTableRuleStatementUpdater.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingBroadcastTableRuleStatementUpdater.java
@@ -17,9 +17,9 @@
package org.apache.shardingsphere.sharding.distsql.handler.update;
-import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
import
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
import
org.apache.shardingsphere.infra.distsql.exception.rule.RuleDefinitionViolationException;
+import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
import
org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingBroadcastTableRulesStatement;
@@ -42,17 +42,24 @@ public final class
AlterShardingBroadcastTableRuleStatementUpdater implements RD
}
@Override
- public void updateCurrentRuleConfiguration(final
AlterShardingBroadcastTableRulesStatement sqlStatement, final
ShardingRuleConfiguration currentRuleConfig) {
+ public ShardingRuleConfiguration buildToBeAlteredRuleConfiguration(final
AlterShardingBroadcastTableRulesStatement sqlStatement) {
+ ShardingRuleConfiguration result = new ShardingRuleConfiguration();
+ result.setBroadcastTables(sqlStatement.getTables());
+ return result;
+ }
+
+ @Override
+ public void updateCurrentRuleConfiguration(final ShardingRuleConfiguration
currentRuleConfig, final ShardingRuleConfiguration toBeAlteredRuleConfig) {
dropRuleConfiguration(currentRuleConfig);
- addRuleConfiguration(sqlStatement, currentRuleConfig);
+ addRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
}
private void dropRuleConfiguration(final ShardingRuleConfiguration
currentRuleConfig) {
currentRuleConfig.getBroadcastTables().clear();
}
- private void addRuleConfiguration(final
AlterShardingBroadcastTableRulesStatement sqlStatement, final
ShardingRuleConfiguration currentRuleConfig) {
-
currentRuleConfig.getBroadcastTables().addAll(sqlStatement.getTables());
+ private void addRuleConfiguration(final ShardingRuleConfiguration
currentRuleConfig, final ShardingRuleConfiguration toBeAlteredRuleConfig) {
+
currentRuleConfig.getBroadcastTables().addAll(toBeAlteredRuleConfig.getBroadcastTables());
}
@Override
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingTableRuleStatementUpdater.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingTableRuleStatementUpdater.java
index 94e8ce0..d3b81bc 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingTableRuleStatementUpdater.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingTableRuleStatementUpdater.java
@@ -18,12 +18,12 @@
package org.apache.shardingsphere.sharding.distsql.handler.update;
import com.google.common.base.Preconditions;
-import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
import org.apache.shardingsphere.infra.distsql.exception.DistSQLException;
import
org.apache.shardingsphere.infra.distsql.exception.resource.RequiredResourceMissedException;
-import
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
-import
org.apache.shardingsphere.infra.distsql.exception.rule.InvalidAlgorithmConfigurationException;
import
org.apache.shardingsphere.infra.distsql.exception.rule.DuplicateRuleException;
+import
org.apache.shardingsphere.infra.distsql.exception.rule.InvalidAlgorithmConfigurationException;
+import
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
+import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
import
org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import org.apache.shardingsphere.infra.spi.typed.TypedSPIRegistry;
@@ -142,14 +142,20 @@ public final class AlterShardingTableRuleStatementUpdater
implements RDLAlterUpd
}
@Override
- public void updateCurrentRuleConfiguration(final
AlterShardingTableRuleStatement sqlStatement, final ShardingRuleConfiguration
currentRuleConfig) {
- dropRuleConfiguration(sqlStatement, currentRuleConfig);
- addRuleConfiguration(sqlStatement, currentRuleConfig);
+ public ShardingRuleConfiguration buildToBeAlteredRuleConfiguration(final
AlterShardingTableRuleStatement sqlStatement) {
+ return ShardingRuleStatementConverter.convert(sqlStatement.getRules());
+ }
+
+ @Override
+ public void updateCurrentRuleConfiguration(final ShardingRuleConfiguration
currentRuleConfig, final ShardingRuleConfiguration toBeAlteredRuleConfig) {
+ dropRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
+ addRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
}
- private void dropRuleConfiguration(final AlterShardingTableRuleStatement
sqlStatement, final ShardingRuleConfiguration currentRuleConfig) {
- for (String each : getToBeAlteredTableNames(sqlStatement)) {
- Optional<ShardingAutoTableRuleConfiguration>
shardingAutoTableRuleConfig =
currentRuleConfig.getAutoTables().stream().filter(tableRule ->
each.equals(tableRule.getLogicTable())).findAny();
+ private void dropRuleConfiguration(final ShardingRuleConfiguration
currentRuleConfig, final ShardingRuleConfiguration toBeAlteredRuleConfig) {
+ for (ShardingTableRuleConfiguration each :
toBeAlteredRuleConfig.getTables()) {
+ Optional<ShardingAutoTableRuleConfiguration>
shardingAutoTableRuleConfig
+ =
currentRuleConfig.getAutoTables().stream().filter(tableRule ->
each.getLogicTable().equals(tableRule.getLogicTable())).findAny();
Preconditions.checkState(shardingAutoTableRuleConfig.isPresent());
currentRuleConfig.getAutoTables().remove(shardingAutoTableRuleConfig.get());
currentRuleConfig.getShardingAlgorithms().remove(shardingAutoTableRuleConfig.get().getShardingStrategy().getShardingAlgorithmName());
@@ -159,8 +165,7 @@ public final class AlterShardingTableRuleStatementUpdater
implements RDLAlterUpd
}
}
- private void addRuleConfiguration(final AlterShardingTableRuleStatement
sqlStatement, final ShardingRuleConfiguration currentRuleConfig) {
- ShardingRuleConfiguration toBeAlteredRuleConfig =
ShardingRuleStatementConverter.convert(sqlStatement.getRules());
+ private void addRuleConfiguration(final ShardingRuleConfiguration
currentRuleConfig, final ShardingRuleConfiguration toBeAlteredRuleConfig) {
currentRuleConfig.getAutoTables().addAll(toBeAlteredRuleConfig.getAutoTables());
currentRuleConfig.getShardingAlgorithms().putAll(toBeAlteredRuleConfig.getShardingAlgorithms());
currentRuleConfig.getKeyGenerators().putAll(toBeAlteredRuleConfig.getKeyGenerators());
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingBindingTableRuleStatementUpdaterTest.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingBindingTableRuleStatementUpdaterTest.java
index b3a038e..10ab1cc 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingBindingTableRuleStatementUpdaterTest.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingBindingTableRuleStatementUpdaterTest.java
@@ -47,12 +47,6 @@ public final class
AlterShardingBindingTableRuleStatementUpdaterTest {
updater.checkSQLStatement("foo", createDuplicatedSQLStatement(),
createCurrentRuleConfiguration(), mock(ShardingSphereResource.class));
}
- @Test
- public void assertUpdateCurrentRuleConfiguration() {
- updater.updateCurrentRuleConfiguration(createDuplicatedSQLStatement(),
createCurrentRuleConfiguration());
- // TODO assert current rule configuration
- }
-
private AlterShardingBindingTableRulesStatement createSQLStatement() {
return new AlterShardingBindingTableRulesStatement(Arrays.asList(new
BindingTableRuleSegment("t_order,t_order_item"), new
BindingTableRuleSegment("t_1,t_2")));
}
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingBroadcastTableRuleStatementUpdaterTest.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingBroadcastTableRuleStatementUpdaterTest.java
index ba94f2d..88f6e9b 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingBroadcastTableRuleStatementUpdaterTest.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingBroadcastTableRuleStatementUpdaterTest.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.sharding.distsql.update;
import
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
import
org.apache.shardingsphere.infra.distsql.exception.rule.RuleDefinitionViolationException;
import
org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
-import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
import
org.apache.shardingsphere.sharding.distsql.handler.update.AlterShardingBroadcastTableRuleStatementUpdater;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingBroadcastTableRulesStatement;
import org.junit.Test;
@@ -35,22 +34,10 @@ public final class
AlterShardingBroadcastTableRuleStatementUpdaterTest {
@Test(expected = RequiredRuleMissedException.class)
public void assertCheckSQLStatementWithoutCurrentRule() throws
RuleDefinitionViolationException {
- updater.checkSQLStatement("foo", createSQLStatement("t_1"), null,
mock(ShardingSphereResource.class));
+ updater.checkSQLStatement("foo", createSQLStatement(), null,
mock(ShardingSphereResource.class));
}
- @Test
- public void assertUpdateCurrentRuleConfiguration() {
- updater.updateCurrentRuleConfiguration(createSQLStatement("t_2"),
createCurrentRuleConfiguration());
- // TODO assert current rule configuration
- }
-
- private AlterShardingBroadcastTableRulesStatement createSQLStatement(final
String broadcastTableName) {
- return new
AlterShardingBroadcastTableRulesStatement(Collections.singleton(broadcastTableName));
- }
-
- private ShardingRuleConfiguration createCurrentRuleConfiguration() {
- ShardingRuleConfiguration result = new ShardingRuleConfiguration();
- result.getBroadcastTables().add("t_1");
- return result;
+ private AlterShardingBroadcastTableRulesStatement createSQLStatement() {
+ return new
AlterShardingBroadcastTableRulesStatement(Collections.singleton("t_1"));
}
}
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingTableRuleStatementUpdaterTest.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingTableRuleStatementUpdaterTest.java
index fc6c8d4..55ee1e4 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingTableRuleStatementUpdaterTest.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingTableRuleStatementUpdaterTest.java
@@ -62,12 +62,6 @@ public final class
AlterShardingTableRuleStatementUpdaterTest {
updater.checkSQLStatement("foo", createSQLStatement("t_order",
"INVALID_TYPE"), createCurrentRuleConfiguration(),
mock(ShardingSphereResource.class));
}
- @Test
- public void assertUpdateCurrentRuleConfiguration() {
- updater.updateCurrentRuleConfiguration(createSQLStatement("t_order",
"STANDARD_TEST"), createCurrentRuleConfiguration());
- // TODO assert current rule configuration
- }
-
private AlterShardingTableRuleStatement createSQLStatement(final String
tableName, final String shardingAlgorithmName) {
TableRuleSegment ruleSegment = new TableRuleSegment(tableName,
Arrays.asList("ds_0", "ds_1"), "order_id", new
AlgorithmSegment(shardingAlgorithmName, new Properties()), null, null);
return new
AlterShardingTableRuleStatement(Collections.singleton(ruleSegment));
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/distsql/update/RDLAlterUpdater.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/distsql/update/RDLAlterUpdater.java
index 666aee5..b668a69 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/distsql/update/RDLAlterUpdater.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/distsql/update/RDLAlterUpdater.java
@@ -29,10 +29,18 @@ import
org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
public interface RDLAlterUpdater<T extends SQLStatement, R extends
RuleConfiguration> extends RDLUpdater<T, R> {
/**
- * Update current rule configuration.
- *
+ * Build to be altered rule configuration.
+ *
* @param sqlStatement SQL statement
+ * @return built to be altered rule configuration
+ */
+ RuleConfiguration buildToBeAlteredRuleConfiguration(T sqlStatement);
+
+ /**
+ * Update current rule configuration.
+ *
* @param currentRuleConfig current rule configuration to be updated
+ * @param toBeAlteredRuleConfig to be altered rule configuration
*/
- void updateCurrentRuleConfiguration(T sqlStatement, R currentRuleConfig);
+ void updateCurrentRuleConfiguration(R currentRuleConfig, R
toBeAlteredRuleConfig);
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/RDLBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/RDLBackendHandler.java
index ec3a4b0..a613da5 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/RDLBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/RDLBackendHandler.java
@@ -98,7 +98,8 @@ public final class RDLBackendHandler<T extends SQLStatement>
extends SchemaRequi
@SuppressWarnings({"rawtypes", "unchecked"})
private void processAlter(final T sqlStatement, final RDLAlterUpdater
updater, final RuleConfiguration currentRuleConfig) {
- updater.updateCurrentRuleConfiguration(sqlStatement,
currentRuleConfig);
+ RuleConfiguration toBeAlteredRuleConfig =
updater.buildToBeAlteredRuleConfiguration(sqlStatement);
+ updater.updateCurrentRuleConfiguration(toBeAlteredRuleConfig,
currentRuleConfig);
}
@SuppressWarnings({"rawtypes", "unchecked"})