This is an automated email from the ASF dual-hosted git repository.
wuweijie 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 915d457 Add RDLBackendHandler.getRuleConfiguration() method (#10951)
915d457 is described below
commit 915d4572b7ee72a77891e8d130a1a5ca4b20ea04
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Jun 23 22:12:44 2021 +0800
Add RDLBackendHandler.getRuleConfiguration() method (#10951)
---
.../AlterDatabaseDiscoveryRuleBackendHandler.java | 23 ++++++-------
.../rdl/impl/AlterEncryptRuleBackendHandler.java | 39 ++++++++++------------
.../AlterReadwriteSplittingRuleBackendHandler.java | 2 +-
...terShardingBindingTableRulesBackendHandler.java | 7 ++--
...rShardingBroadcastTableRulesBackendHandler.java | 8 +++--
.../impl/AlterShardingTableRuleBackendHandler.java | 16 ++++-----
.../CreateDatabaseDiscoveryRuleBackendHandler.java | 17 +++++-----
.../rdl/impl/CreateEncryptRuleBackendHandler.java | 25 +++++++-------
...CreateReadwriteSplittingRuleBackendHandler.java | 11 +++---
...ateShardingBindingTableRulesBackendHandler.java | 24 ++++++-------
...eShardingBroadcastTableRulesBackendHandler.java | 16 ++++-----
.../CreateShardingTableRuleBackendHandler.java | 8 ++---
.../DropDatabaseDiscoveryRuleBackendHandler.java | 12 +++----
.../rdl/impl/DropEncryptRuleBackendHandler.java | 12 +++----
.../DropReadwriteSplittingRuleBackendHandler.java | 18 +++++-----
...ropShardingBindingTableRulesBackendHandler.java | 6 ++--
...pShardingBroadcastTableRulesBackendHandler.java | 6 ++--
.../impl/DropShardingTableRuleBackendHandler.java | 12 +++----
.../text/distsql/rdl/impl/RDLBackendHandler.java | 7 ++++
19 files changed, 135 insertions(+), 134 deletions(-)
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterDatabaseDiscoveryRuleBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterDatabaseDiscoveryRuleBackendHandler.java
index 47fc35a..1b0c7c5 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterDatabaseDiscoveryRuleBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterDatabaseDiscoveryRuleBackendHandler.java
@@ -64,34 +64,33 @@ public final class AlterDatabaseDiscoveryRuleBackendHandler
extends RDLBackendHa
@Override
public void doExecute(final String schemaName, final
AlterDatabaseDiscoveryRuleStatement sqlStatement) {
- DatabaseDiscoveryRuleConfiguration databaseDiscoveryRuleConfig =
findRuleConfiguration(schemaName,
DatabaseDiscoveryRuleConfiguration.class).get();
+ DatabaseDiscoveryRuleConfiguration ruleConfig =
getRuleConfiguration(schemaName, DatabaseDiscoveryRuleConfiguration.class);
DatabaseDiscoveryRuleConfiguration
alteredDatabaseDiscoveryRuleConfiguration = new
YamlRuleConfigurationSwapperEngine()
.swapToRuleConfigurations(Collections.singletonList(DatabaseDiscoveryRuleStatementConverter.convert(sqlStatement.getRules()))).stream()
.map(each -> (DatabaseDiscoveryRuleConfiguration)
each).findFirst().get();
- drop(sqlStatement, databaseDiscoveryRuleConfig);
-
databaseDiscoveryRuleConfig.getDataSources().addAll(alteredDatabaseDiscoveryRuleConfiguration.getDataSources());
-
databaseDiscoveryRuleConfig.getDiscoveryTypes().putAll(alteredDatabaseDiscoveryRuleConfiguration.getDiscoveryTypes());
+ drop(sqlStatement, ruleConfig);
+
ruleConfig.getDataSources().addAll(alteredDatabaseDiscoveryRuleConfiguration.getDataSources());
+
ruleConfig.getDiscoveryTypes().putAll(alteredDatabaseDiscoveryRuleConfiguration.getDiscoveryTypes());
}
private void drop(final AlterDatabaseDiscoveryRuleStatement sqlStatement,
final DatabaseDiscoveryRuleConfiguration databaseDiscoveryRuleConfig) {
getAlteredRuleNames(sqlStatement).forEach(each -> {
- DatabaseDiscoveryDataSourceRuleConfiguration
databaseDiscoveryDataSourceRuleConfiguration =
databaseDiscoveryRuleConfig.getDataSources()
+ DatabaseDiscoveryDataSourceRuleConfiguration
databaseDiscoveryDataSourceRuleConfig =
databaseDiscoveryRuleConfig.getDataSources()
.stream().filter(dataSource ->
dataSource.getName().equals(each)).findAny().get();
-
databaseDiscoveryRuleConfig.getDataSources().remove(databaseDiscoveryDataSourceRuleConfiguration);
-
databaseDiscoveryRuleConfig.getDiscoveryTypes().remove(databaseDiscoveryDataSourceRuleConfiguration.getDiscoveryTypeName());
+
databaseDiscoveryRuleConfig.getDataSources().remove(databaseDiscoveryDataSourceRuleConfig);
+
databaseDiscoveryRuleConfig.getDiscoveryTypes().remove(databaseDiscoveryDataSourceRuleConfig.getDiscoveryTypeName());
});
}
- private void check(final String schemaName, final
AlterDatabaseDiscoveryRuleStatement sqlStatement,
- final DatabaseDiscoveryRuleConfiguration
databaseDiscoveryRuleConfiguration) {
- checkAlteredRules(schemaName, databaseDiscoveryRuleConfiguration,
sqlStatement);
+ private void check(final String schemaName, final
AlterDatabaseDiscoveryRuleStatement sqlStatement, final
DatabaseDiscoveryRuleConfiguration databaseDiscoveryRuleConfig) {
+ checkAlteredRules(schemaName, databaseDiscoveryRuleConfig,
sqlStatement);
checkResources(schemaName, sqlStatement);
checkDiscoveryType(sqlStatement);
}
- private void checkAlteredRules(final String schemaName, final
DatabaseDiscoveryRuleConfiguration databaseDiscoveryRuleConfiguration,
+ private void checkAlteredRules(final String schemaName, final
DatabaseDiscoveryRuleConfiguration databaseDiscoveryRuleConfig,
final AlterDatabaseDiscoveryRuleStatement
sqlStatement) {
- Set<String> existRuleNames =
databaseDiscoveryRuleConfiguration.getDataSources().stream().map(DatabaseDiscoveryDataSourceRuleConfiguration::getName).collect(Collectors.toSet());
+ Set<String> existRuleNames =
databaseDiscoveryRuleConfig.getDataSources().stream().map(DatabaseDiscoveryDataSourceRuleConfiguration::getName).collect(Collectors.toSet());
Collection<String> notExistRuleNames =
getAlteredRuleNames(sqlStatement).stream()
.filter(each ->
!existRuleNames.contains(each)).collect(Collectors.toList());
if (!notExistRuleNames.isEmpty()) {
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterEncryptRuleBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterEncryptRuleBackendHandler.java
index 31ba668..81bed2a 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterEncryptRuleBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterEncryptRuleBackendHandler.java
@@ -62,55 +62,52 @@ public final class AlterEncryptRuleBackendHandler extends
RDLBackendHandler<Alte
@Override
public void doExecute(final String schemaName, final
AlterEncryptRuleStatement sqlStatement) {
- EncryptRuleConfiguration encryptRuleConfig =
findRuleConfiguration(schemaName, EncryptRuleConfiguration.class).get();
+ EncryptRuleConfiguration ruleConfig = getRuleConfiguration(schemaName,
EncryptRuleConfiguration.class);
EncryptRuleConfiguration alteredEncryptRuleConfiguration = new
YamlRuleConfigurationSwapperEngine()
.swapToRuleConfigurations(Collections.singletonList(EncryptRuleStatementConverter.convert(sqlStatement.getRules()))).stream()
.map(each -> (EncryptRuleConfiguration)
each).findFirst().get();
- drop(sqlStatement, encryptRuleConfig);
-
encryptRuleConfig.getTables().addAll(alteredEncryptRuleConfiguration.getTables());
-
encryptRuleConfig.getEncryptors().putAll(alteredEncryptRuleConfiguration.getEncryptors());
+ drop(sqlStatement, ruleConfig);
+
ruleConfig.getTables().addAll(alteredEncryptRuleConfiguration.getTables());
+
ruleConfig.getEncryptors().putAll(alteredEncryptRuleConfiguration.getEncryptors());
}
- private void drop(final AlterEncryptRuleStatement sqlStatement, final
EncryptRuleConfiguration encryptRuleConfiguration) {
+ private void drop(final AlterEncryptRuleStatement sqlStatement, final
EncryptRuleConfiguration encryptRuleConfig) {
getAlteredRuleNames(sqlStatement).forEach(each -> {
- EncryptTableRuleConfiguration encryptTableRuleConfiguration =
encryptRuleConfiguration.getTables()
- .stream().filter(tableRule ->
tableRule.getName().equals(each)).findAny().get();
-
encryptRuleConfiguration.getTables().remove(encryptTableRuleConfiguration);
- encryptTableRuleConfiguration.getColumns().forEach(column ->
encryptRuleConfiguration.getEncryptors().remove(column.getEncryptorName()));
+ EncryptTableRuleConfiguration encryptTableRuleConfig =
encryptRuleConfig.getTables().stream().filter(tableRule ->
tableRule.getName().equals(each)).findAny().get();
+ encryptRuleConfig.getTables().remove(encryptTableRuleConfig);
+ encryptTableRuleConfig.getColumns().forEach(column ->
encryptRuleConfig.getEncryptors().remove(column.getEncryptorName()));
});
}
- private void check(final String schemaName, final
AlterEncryptRuleStatement sqlStatement, final EncryptRuleConfiguration
encryptRuleConfiguration) {
- checkAlteredTables(schemaName, encryptRuleConfiguration, sqlStatement);
+ private void check(final String schemaName, final
AlterEncryptRuleStatement sqlStatement, final EncryptRuleConfiguration
encryptRuleConfig) {
+ checkAlteredTables(schemaName, encryptRuleConfig, sqlStatement);
checkEncryptors(sqlStatement);
}
- private void checkAlteredTables(final String schemaName, final
EncryptRuleConfiguration encryptRuleConfiguration, final
AlterEncryptRuleStatement sqlStatement) {
- Collection<String> existTables =
getExistTables(encryptRuleConfiguration);
- Collection<String> notExistTables =
getAlteredRuleNames(sqlStatement).stream()
- .filter(each ->
!existTables.contains(each)).collect(Collectors.toList());
+ private void checkAlteredTables(final String schemaName, final
EncryptRuleConfiguration encryptRuleConfig, final AlterEncryptRuleStatement
sqlStatement) {
+ Collection<String> existTables = getExistTables(encryptRuleConfig);
+ Collection<String> notExistTables =
getAlteredRuleNames(sqlStatement).stream().filter(each ->
!existTables.contains(each)).collect(Collectors.toList());
if (!notExistTables.isEmpty()) {
throw new EncryptRulesNotExistedException(schemaName,
notExistTables);
}
}
- private Collection<String> getExistTables(final EncryptRuleConfiguration
encryptRuleConfiguration) {
- return
encryptRuleConfiguration.getTables().stream().map(EncryptTableRuleConfiguration::getName).collect(Collectors.toList());
+ private Collection<String> getExistTables(final EncryptRuleConfiguration
encryptRuleConfig) {
+ return
encryptRuleConfig.getTables().stream().map(EncryptTableRuleConfiguration::getName).collect(Collectors.toList());
}
private void checkEncryptors(final AlterEncryptRuleStatement sqlStatement)
{
Collection<String> encryptors = new LinkedHashSet<>();
sqlStatement.getRules().forEach(each ->
encryptors.addAll(each.getColumns().stream()
.map(column ->
column.getEncryptor().getName()).collect(Collectors.toSet())));
- Collection<String> invalidEncryptors = encryptors.stream().filter(each
-> !TypedSPIRegistry.findRegisteredService(EncryptAlgorithm.class, each, new
Properties()).isPresent())
- .collect(Collectors.toList());
+ Collection<String> invalidEncryptors = encryptors.stream().filter(
+ each ->
!TypedSPIRegistry.findRegisteredService(EncryptAlgorithm.class, each, new
Properties()).isPresent()).collect(Collectors.toList());
if (!invalidEncryptors.isEmpty()) {
throw new InvalidEncryptorsException(invalidEncryptors);
}
}
private Collection<String> getAlteredRuleNames(final
AlterEncryptRuleStatement sqlStatement) {
- return sqlStatement.getRules()
-
.stream().map(EncryptRuleSegment::getTableName).collect(Collectors.toList());
+ return
sqlStatement.getRules().stream().map(EncryptRuleSegment::getTableName).collect(Collectors.toList());
}
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterReadwriteSplittingRuleBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterReadwriteSplittingRuleBackendHandler.java
index c174578..8a0fc0f 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterReadwriteSplittingRuleBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterReadwriteSplittingRuleBackendHandler.java
@@ -68,7 +68,7 @@ public final class AlterReadwriteSplittingRuleBackendHandler
extends RDLBackendH
ReadwriteSplittingRuleConfiguration alterReadwriteSplittingRuleConfig
= new YamlRuleConfigurationSwapperEngine()
.swapToRuleConfigurations(Collections.singletonList(ReadwriteSplittingRuleStatementConverter.convert(sqlStatement))).stream()
.map(each -> (ReadwriteSplittingRuleConfiguration)
each).findFirst().get();
- ReadwriteSplittingRuleConfiguration readwriteSplittingRuleConfig =
findRuleConfiguration(schemaName,
ReadwriteSplittingRuleConfiguration.class).get();
+ ReadwriteSplittingRuleConfiguration readwriteSplittingRuleConfig =
getRuleConfiguration(schemaName, ReadwriteSplittingRuleConfiguration.class);
drop(sqlStatement, readwriteSplittingRuleConfig);
readwriteSplittingRuleConfig.getDataSources().addAll(alterReadwriteSplittingRuleConfig.getDataSources());
readwriteSplittingRuleConfig.getLoadBalancers().putAll(alterReadwriteSplittingRuleConfig.getLoadBalancers());
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingBindingTableRulesBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingBindingTableRulesBackendHandler.java
index 44f93a7..f96a498 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingBindingTableRulesBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingBindingTableRulesBackendHandler.java
@@ -68,12 +68,13 @@ public final class
AlterShardingBindingTableRulesBackendHandler extends RDLBacke
@Override
public void doExecute(final String schemaName, final
AlterShardingBindingTableRulesStatement sqlStatement) {
- findRuleConfiguration(schemaName,
ShardingRuleConfiguration.class).get().getBindingTableGroups().clear();
- findRuleConfiguration(schemaName,
ShardingRuleConfiguration.class).get().getBindingTableGroups().addAll(ShardingRuleStatementConverter.convert(sqlStatement).getBindingTables());
+ Collection<String> bindingTableGroups =
getRuleConfiguration(schemaName,
ShardingRuleConfiguration.class).getBindingTableGroups();
+ bindingTableGroups.clear();
+
bindingTableGroups.addAll(ShardingRuleStatementConverter.convert(sqlStatement).getBindingTables());
}
private Collection<String> getLogicTables(final String schemaName) {
- ShardingRuleConfiguration shardingRuleConfig =
findRuleConfiguration(schemaName, ShardingRuleConfiguration.class).get();
+ ShardingRuleConfiguration shardingRuleConfig =
getRuleConfiguration(schemaName, ShardingRuleConfiguration.class);
Collection<String> result = new HashSet<>();
result.addAll(shardingRuleConfig.getTables().stream().map(ShardingTableRuleConfiguration::getLogicTable).collect(Collectors.toSet()));
result.addAll(shardingRuleConfig.getAutoTables().stream().map(ShardingAutoTableRuleConfiguration::getLogicTable).collect(Collectors.toSet()));
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingBroadcastTableRulesBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingBroadcastTableRulesBackendHandler.java
index 07d032e..967bf1a 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingBroadcastTableRulesBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingBroadcastTableRulesBackendHandler.java
@@ -17,11 +17,12 @@
package org.apache.shardingsphere.proxy.backend.text.distsql.rdl.impl;
-import
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingBroadcastTableRulesStatement;
import
org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import
org.apache.shardingsphere.proxy.backend.exception.ShardingBroadcastTableRulesNotExistsException;
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
+import
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingBroadcastTableRulesStatement;
+import java.util.Collection;
import java.util.Optional;
/**
@@ -43,7 +44,8 @@ public final class
AlterShardingBroadcastTableRulesBackendHandler extends RDLBac
@Override
public void doExecute(final String schemaName, final
AlterShardingBroadcastTableRulesStatement sqlStatement) {
- findRuleConfiguration(schemaName,
ShardingRuleConfiguration.class).get().getBroadcastTables().clear();
- findRuleConfiguration(schemaName,
ShardingRuleConfiguration.class).get().getBroadcastTables().addAll(sqlStatement.getTables());
+ Collection<String> broadcastTables = getRuleConfiguration(schemaName,
ShardingRuleConfiguration.class).getBroadcastTables();
+ broadcastTables.clear();
+ broadcastTables.addAll(sqlStatement.getTables());
}
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingTableRuleBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingTableRuleBackendHandler.java
index a951dac..3cf85ec 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingTableRuleBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingTableRuleBackendHandler.java
@@ -93,9 +93,8 @@ public final class AlterShardingTableRuleBackendHandler
extends RDLBackendHandle
@Override
public void doExecute(final String schemaName, final
AlterShardingTableRuleStatement sqlStatement) {
ShardingRuleConfiguration alteredShardingRuleConfig = new
YamlRuleConfigurationSwapperEngine()
-
.swapToRuleConfigurations(Collections.singletonList(ShardingRuleStatementConverter.convert(sqlStatement))).stream()
- .map(each -> (ShardingRuleConfiguration)
each).findFirst().get();
- ShardingRuleConfiguration shardingRuleConfig =
findRuleConfiguration(schemaName, ShardingRuleConfiguration.class).get();
+
.swapToRuleConfigurations(Collections.singletonList(ShardingRuleStatementConverter.convert(sqlStatement))).stream().map(each
-> (ShardingRuleConfiguration) each).findFirst().get();
+ ShardingRuleConfiguration shardingRuleConfig =
getRuleConfiguration(schemaName, ShardingRuleConfiguration.class);
drop(shardingRuleConfig, sqlStatement);
shardingRuleConfig.getAutoTables().addAll(alteredShardingRuleConfig.getAutoTables());
shardingRuleConfig.getShardingAlgorithms().putAll(alteredShardingRuleConfig.getShardingAlgorithms());
@@ -103,7 +102,7 @@ public final class AlterShardingTableRuleBackendHandler
extends RDLBackendHandle
}
private void drop(final ShardingRuleConfiguration shardingRuleConfig,
final AlterShardingTableRuleStatement sqlStatement) {
- getAlteredTables(sqlStatement).stream().forEach(each -> {
+ getAlteredTables(sqlStatement).forEach(each -> {
ShardingAutoTableRuleConfiguration shardingAutoTableRuleConfig =
shardingRuleConfig.getAutoTables().stream().filter(tableRule ->
each.equals(tableRule.getLogicTable())).findAny().get();
shardingRuleConfig.getAutoTables().remove(shardingAutoTableRuleConfig);
shardingRuleConfig.getShardingAlgorithms().remove(shardingAutoTableRuleConfig.getShardingStrategy().getShardingAlgorithmName());
@@ -126,10 +125,10 @@ public final class AlterShardingTableRuleBackendHandler
extends RDLBackendHandle
return
sqlStatement.getRules().stream().map(TableRuleSegment::getLogicTable).collect(Collectors.toList());
}
- private Collection<String> getShardingTables(final
ShardingRuleConfiguration shardingRuleConfiguration) {
+ private Collection<String> getShardingTables(final
ShardingRuleConfiguration shardingRuleConfig) {
Collection<String> result = new LinkedList<>();
-
result.addAll(shardingRuleConfiguration.getTables().stream().map(ShardingTableRuleConfiguration::getLogicTable).collect(Collectors.toList()));
-
result.addAll(shardingRuleConfiguration.getAutoTables().stream().map(ShardingAutoTableRuleConfiguration::getLogicTable).collect(Collectors.toList()));
+
result.addAll(shardingRuleConfig.getTables().stream().map(ShardingTableRuleConfiguration::getLogicTable).collect(Collectors.toList()));
+
result.addAll(shardingRuleConfig.getAutoTables().stream().map(ShardingAutoTableRuleConfiguration::getLogicTable).collect(Collectors.toList()));
return result;
}
@@ -140,7 +139,6 @@ public final class AlterShardingTableRuleBackendHandler
extends RDLBackendHandle
}
private Collection<String> getKeyGenerators(final
AlterShardingTableRuleStatement sqlStatement) {
- return sqlStatement.getRules().stream().filter(each ->
Objects.nonNull(each.getKeyGenerateStrategy()))
- .map(each ->
each.getKeyGenerateStrategy().getName()).collect(Collectors.toSet());
+ return sqlStatement.getRules().stream().filter(each ->
Objects.nonNull(each.getKeyGenerateStrategy())).map(each ->
each.getKeyGenerateStrategy().getName()).collect(Collectors.toSet());
}
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateDatabaseDiscoveryRuleBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateDatabaseDiscoveryRuleBackendHandler.java
index 91aec3b..b5dfe21 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateDatabaseDiscoveryRuleBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateDatabaseDiscoveryRuleBackendHandler.java
@@ -68,8 +68,9 @@ public final class CreateDatabaseDiscoveryRuleBackendHandler
extends RDLBackendH
DatabaseDiscoveryRuleConfiguration
createdDatabaseDiscoveryRuleConfiguration = new
YamlRuleConfigurationSwapperEngine()
.swapToRuleConfigurations(Collections.singleton(yamlDatabaseDiscoveryRuleConfig))
.stream().filter(each -> each instanceof
DatabaseDiscoveryRuleConfiguration).findAny().map(each ->
(DatabaseDiscoveryRuleConfiguration) each).get();
- if (findRuleConfiguration(schemaName,
DatabaseDiscoveryRuleConfiguration.class).isPresent()) {
- DatabaseDiscoveryRuleConfiguration
existDatabaseDiscoveryRuleConfig = findRuleConfiguration(schemaName,
DatabaseDiscoveryRuleConfiguration.class).get();
+ Optional<DatabaseDiscoveryRuleConfiguration> ruleConfig =
findRuleConfiguration(schemaName, DatabaseDiscoveryRuleConfiguration.class);
+ if (ruleConfig.isPresent()) {
+ DatabaseDiscoveryRuleConfiguration
existDatabaseDiscoveryRuleConfig = ruleConfig.get();
existDatabaseDiscoveryRuleConfig.getDataSources().addAll(createdDatabaseDiscoveryRuleConfiguration.getDataSources());
existDatabaseDiscoveryRuleConfig.getDiscoveryTypes().putAll(createdDatabaseDiscoveryRuleConfiguration.getDiscoveryTypes());
} else {
@@ -78,11 +79,10 @@ public final class
CreateDatabaseDiscoveryRuleBackendHandler extends RDLBackendH
}
private void checkDuplicateRuleNames(final String schemaName, final
CreateDatabaseDiscoveryRuleStatement sqlStatement) {
- Optional<DatabaseDiscoveryRuleConfiguration> optional =
findRuleConfiguration(schemaName, DatabaseDiscoveryRuleConfiguration.class);
- if (optional.isPresent()) {
- Collection<String> existRuleNames = getRuleNames(optional.get());
- Collection<String> duplicateRuleNames =
sqlStatement.getRules().stream()
-
.map(DatabaseDiscoveryRuleSegment::getName).filter(existRuleNames::contains).collect(Collectors.toSet());
+ Optional<DatabaseDiscoveryRuleConfiguration> ruleConfig =
findRuleConfiguration(schemaName, DatabaseDiscoveryRuleConfiguration.class);
+ if (ruleConfig.isPresent()) {
+ Collection<String> existRuleNames = getRuleNames(ruleConfig.get());
+ Collection<String> duplicateRuleNames =
sqlStatement.getRules().stream().map(DatabaseDiscoveryRuleSegment::getName).filter(existRuleNames::contains).collect(Collectors.toSet());
duplicateRuleNames.addAll(getDuplicateRuleNames(sqlStatement));
if (!duplicateRuleNames.isEmpty()) {
throw new DuplicateRuleNamesException(schemaName,
duplicateRuleNames);
@@ -110,8 +110,7 @@ public final class
CreateDatabaseDiscoveryRuleBackendHandler extends RDLBackendH
private void checkDiscoverTypes(final CreateDatabaseDiscoveryRuleStatement
sqlStatement) {
Collection<String> invalidDiscoveryTypes =
sqlStatement.getRules().stream().map(DatabaseDiscoveryRuleSegment::getDiscoveryTypeName).distinct()
- .filter(each ->
!TypedSPIRegistry.findRegisteredService(DatabaseDiscoveryType.class, each, new
Properties()).isPresent())
- .collect(Collectors.toList());
+ .filter(each ->
!TypedSPIRegistry.findRegisteredService(DatabaseDiscoveryType.class, each, new
Properties()).isPresent()).collect(Collectors.toList());
if (!invalidDiscoveryTypes.isEmpty()) {
throw new
InvalidDatabaseDiscoveryTypesException(invalidDiscoveryTypes);
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateEncryptRuleBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateEncryptRuleBackendHandler.java
index 1dd74a5..da7bd17 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateEncryptRuleBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateEncryptRuleBackendHandler.java
@@ -17,10 +17,10 @@
package org.apache.shardingsphere.proxy.backend.text.distsql.rdl.impl;
-import
org.apache.shardingsphere.encrypt.distsql.parser.segment.EncryptRuleSegment;
-import
org.apache.shardingsphere.encrypt.distsql.parser.statement.CreateEncryptRuleStatement;
import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
import
org.apache.shardingsphere.encrypt.api.config.rule.EncryptTableRuleConfiguration;
+import
org.apache.shardingsphere.encrypt.distsql.parser.segment.EncryptRuleSegment;
+import
org.apache.shardingsphere.encrypt.distsql.parser.statement.CreateEncryptRuleStatement;
import org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm;
import
org.apache.shardingsphere.encrypt.yaml.config.YamlEncryptRuleConfiguration;
import
org.apache.shardingsphere.encrypt.yaml.converter.EncryptRuleStatementConverter;
@@ -66,8 +66,9 @@ public final class CreateEncryptRuleBackendHandler extends
RDLBackendHandler<Cre
EncryptRuleConfiguration createdEncryptRuleConfiguration = new
YamlRuleConfigurationSwapperEngine()
.swapToRuleConfigurations(Collections.singleton(yamlEncryptRuleConfiguration))
.stream().filter(each -> each instanceof
EncryptRuleConfiguration).findAny().map(each -> (EncryptRuleConfiguration)
each).get();
- if (findRuleConfiguration(schemaName,
EncryptRuleConfiguration.class).isPresent()) {
- EncryptRuleConfiguration existEncryptRuleConfig =
findRuleConfiguration(schemaName, EncryptRuleConfiguration.class).get();
+ Optional<EncryptRuleConfiguration> ruleConfig =
findRuleConfiguration(schemaName, EncryptRuleConfiguration.class);
+ if (ruleConfig.isPresent()) {
+ EncryptRuleConfiguration existEncryptRuleConfig = ruleConfig.get();
existEncryptRuleConfig.getTables().addAll(createdEncryptRuleConfiguration.getTables());
existEncryptRuleConfig.getEncryptors().putAll(createdEncryptRuleConfiguration.getEncryptors());
} else {
@@ -76,11 +77,10 @@ public final class CreateEncryptRuleBackendHandler extends
RDLBackendHandler<Cre
}
private void checkDuplicateRuleNames(final String schemaName, final
CreateEncryptRuleStatement sqlStatement) {
- Optional<EncryptRuleConfiguration> optional =
findRuleConfiguration(schemaName, EncryptRuleConfiguration.class);
- if (optional.isPresent()) {
- Collection<String> existRuleNames = getRuleNames(optional.get());
- Collection<String> duplicateRuleNames =
sqlStatement.getRules().stream()
-
.map(EncryptRuleSegment::getTableName).filter(existRuleNames::contains).collect(Collectors.toList());
+ Optional<EncryptRuleConfiguration> ruleConfig =
findRuleConfiguration(schemaName, EncryptRuleConfiguration.class);
+ if (ruleConfig.isPresent()) {
+ Collection<String> existRuleNames = getRuleNames(ruleConfig.get());
+ Collection<String> duplicateRuleNames =
sqlStatement.getRules().stream().map(EncryptRuleSegment::getTableName).filter(existRuleNames::contains).collect(Collectors.toList());
if (!duplicateRuleNames.isEmpty()) {
throw new DuplicateRuleNamesException(schemaName,
duplicateRuleNames);
}
@@ -89,8 +89,7 @@ public final class CreateEncryptRuleBackendHandler extends
RDLBackendHandler<Cre
private void checkEncryptors(final CreateEncryptRuleStatement
sqlStatement) {
Collection<String> encryptors = new LinkedHashSet<>();
- sqlStatement.getRules().forEach(each ->
encryptors.addAll(each.getColumns().stream()
- .map(column ->
column.getEncryptor().getName()).collect(Collectors.toSet())));
+ sqlStatement.getRules().forEach(each ->
encryptors.addAll(each.getColumns().stream().map(column ->
column.getEncryptor().getName()).collect(Collectors.toSet())));
Collection<String> invalidEncryptors = encryptors.stream().filter(
each ->
!TypedSPIRegistry.findRegisteredService(EncryptAlgorithm.class, each, new
Properties()).isPresent()).collect(Collectors.toList());
if (!invalidEncryptors.isEmpty()) {
@@ -98,7 +97,7 @@ public final class CreateEncryptRuleBackendHandler extends
RDLBackendHandler<Cre
}
}
- private Collection<String> getRuleNames(final EncryptRuleConfiguration
encryptRuleConfiguration) {
- return
encryptRuleConfiguration.getTables().stream().map(EncryptTableRuleConfiguration::getName).collect(Collectors.toList());
+ private Collection<String> getRuleNames(final EncryptRuleConfiguration
encryptRuleConfig) {
+ return
encryptRuleConfig.getTables().stream().map(EncryptTableRuleConfiguration::getName).collect(Collectors.toList());
}
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateReadwriteSplittingRuleBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateReadwriteSplittingRuleBackendHandler.java
index abdb411..d16d5dd 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateReadwriteSplittingRuleBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateReadwriteSplittingRuleBackendHandler.java
@@ -68,8 +68,9 @@ public final class CreateReadwriteSplittingRuleBackendHandler
extends RDLBackend
ReadwriteSplittingRuleConfiguration
createdReadwriteSplittingRuleConfig = new YamlRuleConfigurationSwapperEngine()
.swapToRuleConfigurations(Collections.singleton(yamlReadwriteSplittingRuleConfig))
.stream().filter(each -> each instanceof
ReadwriteSplittingRuleConfiguration).findAny().map(each ->
(ReadwriteSplittingRuleConfiguration) each).get();
- if (findRuleConfiguration(schemaName,
ReadwriteSplittingRuleConfiguration.class).isPresent()) {
- ReadwriteSplittingRuleConfiguration
existReadwriteSplittingRuleConfig = findRuleConfiguration(schemaName,
ReadwriteSplittingRuleConfiguration.class).get();
+ Optional<ReadwriteSplittingRuleConfiguration> ruleConfig =
findRuleConfiguration(schemaName, ReadwriteSplittingRuleConfiguration.class);
+ if (ruleConfig.isPresent()) {
+ ReadwriteSplittingRuleConfiguration
existReadwriteSplittingRuleConfig = ruleConfig.get();
existReadwriteSplittingRuleConfig.getDataSources().addAll(createdReadwriteSplittingRuleConfig.getDataSources());
existReadwriteSplittingRuleConfig.getLoadBalancers().putAll(createdReadwriteSplittingRuleConfig.getLoadBalancers());
} else {
@@ -78,9 +79,9 @@ public final class CreateReadwriteSplittingRuleBackendHandler
extends RDLBackend
}
private void checkDuplicateRuleNames(final String schemaName, final
CreateReadwriteSplittingRuleStatement sqlStatement) {
- Optional<ReadwriteSplittingRuleConfiguration> optional =
findRuleConfiguration(schemaName, ReadwriteSplittingRuleConfiguration.class);
- if (optional.isPresent()) {
- Collection<String> existRuleNames = getRuleNames(optional.get());
+ Optional<ReadwriteSplittingRuleConfiguration> ruleConfig =
findRuleConfiguration(schemaName, ReadwriteSplittingRuleConfiguration.class);
+ if (ruleConfig.isPresent()) {
+ Collection<String> existRuleNames = getRuleNames(ruleConfig.get());
Collection<String> duplicateRuleNames =
sqlStatement.getRules().stream().map(ReadwriteSplittingRuleSegment::getName).filter(existRuleNames::contains).collect(Collectors.toList());
if (!duplicateRuleNames.isEmpty()) {
throw new DuplicateRuleNamesException(schemaName,
duplicateRuleNames);
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingBindingTableRulesBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingBindingTableRulesBackendHandler.java
index dfa53ea..8c05154 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingBindingTableRulesBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingBindingTableRulesBackendHandler.java
@@ -46,8 +46,8 @@ public final class
CreateShardingBindingTableRulesBackendHandler extends RDLBack
@Override
public void before(final String schemaName, final
CreateShardingBindingTableRulesStatement sqlStatement) {
- Optional<ShardingRuleConfiguration> shardingRuleConfig =
findRuleConfiguration(schemaName, ShardingRuleConfiguration.class);
- if (!shardingRuleConfig.isPresent()) {
+ Optional<ShardingRuleConfiguration> ruleConfig =
findRuleConfiguration(schemaName, ShardingRuleConfiguration.class);
+ if (!ruleConfig.isPresent()) {
throw new ShardingBindingTableRulesNotExistsException(schemaName);
}
Collection<String> invalidBindingTables = new HashSet<>();
@@ -63,13 +63,21 @@ public final class
CreateShardingBindingTableRulesBackendHandler extends RDLBack
if (!invalidBindingTables.isEmpty()) {
throw new ShardingTableRuleNotExistedException(schemaName,
invalidBindingTables);
}
- bindingTables.addAll(shardingRuleConfig.get().getBindingTableGroups());
+ bindingTables.addAll(ruleConfig.get().getBindingTableGroups());
Collection<String> duplicateBindingTables =
bindingTables.stream().filter(distinct()).collect(Collectors.toList());
if (!duplicateBindingTables.isEmpty()) {
throw new DuplicateBindingTablesException(duplicateBindingTables);
}
}
+ private Collection<String> getLogicTables(final String schemaName) {
+ ShardingRuleConfiguration ruleConfig =
getRuleConfiguration(schemaName, ShardingRuleConfiguration.class);
+ Collection<String> result = new HashSet<>();
+
result.addAll(ruleConfig.getTables().stream().map(ShardingTableRuleConfiguration::getLogicTable).collect(Collectors.toSet()));
+
result.addAll(ruleConfig.getAutoTables().stream().map(ShardingAutoTableRuleConfiguration::getLogicTable).collect(Collectors.toSet()));
+ return result;
+ }
+
private Predicate<String> distinct() {
Collection<String> tables = new HashSet<>();
return table -> notEquals(table, tables);
@@ -89,14 +97,6 @@ public final class
CreateShardingBindingTableRulesBackendHandler extends RDLBack
@Override
public void doExecute(final String schemaName, final
CreateShardingBindingTableRulesStatement sqlStatement) {
YamlShardingRuleConfiguration yamlShardingRuleConfiguration =
ShardingRuleStatementConverter.convert(sqlStatement);
- findRuleConfiguration(schemaName,
ShardingRuleConfiguration.class).get().getBindingTableGroups().addAll(yamlShardingRuleConfiguration.getBindingTables());
- }
-
- private Collection<String> getLogicTables(final String schemaName) {
- ShardingRuleConfiguration shardingRuleConfig =
findRuleConfiguration(schemaName, ShardingRuleConfiguration.class).get();
- Collection<String> result = new HashSet<>();
-
result.addAll(shardingRuleConfig.getTables().stream().map(ShardingTableRuleConfiguration::getLogicTable).collect(Collectors.toSet()));
-
result.addAll(shardingRuleConfig.getAutoTables().stream().map(ShardingAutoTableRuleConfiguration::getLogicTable).collect(Collectors.toSet()));
- return result;
+ getRuleConfiguration(schemaName,
ShardingRuleConfiguration.class).getBindingTableGroups().addAll(yamlShardingRuleConfiguration.getBindingTables());
}
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingBroadcastTableRulesBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingBroadcastTableRulesBackendHandler.java
index 59f96c0..1815691 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingBroadcastTableRulesBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingBroadcastTableRulesBackendHandler.java
@@ -17,11 +17,11 @@
package org.apache.shardingsphere.proxy.backend.text.distsql.rdl.impl;
-import
org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingBroadcastTableRulesStatement;
import
org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import
org.apache.shardingsphere.proxy.backend.exception.ShardingBroadcastTableRulesExistsException;
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
+import
org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingBroadcastTableRulesStatement;
import java.util.Optional;
@@ -40,16 +40,16 @@ public final class
CreateShardingBroadcastTableRulesBackendHandler extends RDLBa
@Override
public void doExecute(final String schemaName, final
CreateShardingBroadcastTableRulesStatement sqlStatement) {
- Optional<ShardingRuleConfiguration> shardingRuleConfig =
findRuleConfiguration(schemaName, ShardingRuleConfiguration.class);
- if (!shardingRuleConfig.isPresent()) {
+ Optional<ShardingRuleConfiguration> ruleConfig =
findRuleConfiguration(schemaName, ShardingRuleConfiguration.class);
+ if (ruleConfig.isPresent()) {
+ if (!ruleConfig.get().getBroadcastTables().isEmpty()) {
+ throw new
ShardingBroadcastTableRulesExistsException(schemaName);
+ }
+
ruleConfig.get().getBroadcastTables().addAll(sqlStatement.getTables());
+ } else {
ShardingRuleConfiguration shardingRuleConfiguration = new
ShardingRuleConfiguration();
shardingRuleConfiguration.setBroadcastTables(sqlStatement.getTables());
ProxyContext.getInstance().getMetaData(schemaName).getRuleMetaData().getConfigurations().add(shardingRuleConfiguration);
- } else {
- if (!shardingRuleConfig.get().getBroadcastTables().isEmpty()) {
- throw new
ShardingBroadcastTableRulesExistsException(schemaName);
- }
-
shardingRuleConfig.get().getBroadcastTables().addAll(sqlStatement.getTables());
}
}
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingTableRuleBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingTableRuleBackendHandler.java
index 6755b38..4f5c3ec 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingTableRuleBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingTableRuleBackendHandler.java
@@ -18,8 +18,6 @@
package org.apache.shardingsphere.proxy.backend.text.distsql.rdl.impl;
import com.google.common.collect.Sets;
-import
org.apache.shardingsphere.sharding.distsql.parser.segment.TableRuleSegment;
-import
org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingTableRuleStatement;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import org.apache.shardingsphere.infra.spi.typed.TypedSPIRegistry;
import
org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapperEngine;
@@ -33,6 +31,8 @@ import
org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
import
org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
import
org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
import
org.apache.shardingsphere.sharding.converter.ShardingRuleStatementConverter;
+import
org.apache.shardingsphere.sharding.distsql.parser.segment.TableRuleSegment;
+import
org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingTableRuleStatement;
import org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm;
import org.apache.shardingsphere.sharding.spi.ShardingAlgorithm;
@@ -105,9 +105,7 @@ public final class CreateShardingTableRuleBackendHandler
extends RDLBackendHandl
private Collection<String> getAllTables(final String schemaName) {
Collection<String> result =
Sets.newHashSet(ProxyContext.getInstance().getMetaData(schemaName).getSchema().getAllTableNames());
- if (findRuleConfiguration(schemaName,
ShardingRuleConfiguration.class).isPresent()) {
- result.addAll(getShardingTables(findRuleConfiguration(schemaName,
ShardingRuleConfiguration.class).get()));
- }
+ findRuleConfiguration(schemaName,
ShardingRuleConfiguration.class).ifPresent(optional ->
result.addAll(getShardingTables(optional)));
return result;
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropDatabaseDiscoveryRuleBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropDatabaseDiscoveryRuleBackendHandler.java
index 0661ad1..7947303 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropDatabaseDiscoveryRuleBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropDatabaseDiscoveryRuleBackendHandler.java
@@ -48,15 +48,15 @@ public final class DropDatabaseDiscoveryRuleBackendHandler
extends RDLBackendHan
@Override
public void doExecute(final String schemaName, final
DropDatabaseDiscoveryRuleStatement sqlStatement) {
- DatabaseDiscoveryRuleConfiguration databaseDiscoveryRuleConfig =
findRuleConfiguration(schemaName,
DatabaseDiscoveryRuleConfiguration.class).get();
+ DatabaseDiscoveryRuleConfiguration ruleConfig =
getRuleConfiguration(schemaName, DatabaseDiscoveryRuleConfiguration.class);
sqlStatement.getRuleNames().forEach(each -> {
- DatabaseDiscoveryDataSourceRuleConfiguration
databaseDiscoveryDataSourceRuleConfiguration =
databaseDiscoveryRuleConfig.getDataSources()
+ DatabaseDiscoveryDataSourceRuleConfiguration
databaseDiscoveryDataSourceRuleConfig = ruleConfig.getDataSources()
.stream().filter(dataSource ->
dataSource.getName().equals(each)).findAny().get();
-
databaseDiscoveryRuleConfig.getDataSources().remove(databaseDiscoveryDataSourceRuleConfiguration);
-
databaseDiscoveryRuleConfig.getDiscoveryTypes().remove(databaseDiscoveryDataSourceRuleConfiguration.getDiscoveryTypeName());
+
ruleConfig.getDataSources().remove(databaseDiscoveryDataSourceRuleConfig);
+
ruleConfig.getDiscoveryTypes().remove(databaseDiscoveryDataSourceRuleConfig.getDiscoveryTypeName());
});
- if (databaseDiscoveryRuleConfig.getDataSources().isEmpty()) {
-
ProxyContext.getInstance().getMetaData(schemaName).getRuleMetaData().getConfigurations().remove(databaseDiscoveryRuleConfig);
+ if (ruleConfig.getDataSources().isEmpty()) {
+
ProxyContext.getInstance().getMetaData(schemaName).getRuleMetaData().getConfigurations().remove(ruleConfig);
}
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropEncryptRuleBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropEncryptRuleBackendHandler.java
index b693232..042588f 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropEncryptRuleBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropEncryptRuleBackendHandler.java
@@ -48,15 +48,15 @@ public final class DropEncryptRuleBackendHandler extends
RDLBackendHandler<DropE
@Override
public void doExecute(final String schemaName, final
DropEncryptRuleStatement sqlStatement) {
- EncryptRuleConfiguration encryptRuleConfig =
findRuleConfiguration(schemaName, EncryptRuleConfiguration.class).get();
+ EncryptRuleConfiguration ruleConfig = getRuleConfiguration(schemaName,
EncryptRuleConfiguration.class);
sqlStatement.getTables().forEach(each -> {
- EncryptTableRuleConfiguration encryptTableRuleConfiguration =
encryptRuleConfig.getTables()
+ EncryptTableRuleConfiguration encryptTableRuleConfiguration =
ruleConfig.getTables()
.stream().filter(tableRule ->
tableRule.getName().equals(each)).findAny().get();
-
encryptRuleConfig.getTables().remove(encryptTableRuleConfiguration);
- encryptTableRuleConfiguration.getColumns().forEach(column ->
encryptRuleConfig.getEncryptors().remove(column.getEncryptorName()));
+ ruleConfig.getTables().remove(encryptTableRuleConfiguration);
+ encryptTableRuleConfiguration.getColumns().forEach(column ->
ruleConfig.getEncryptors().remove(column.getEncryptorName()));
});
- if (encryptRuleConfig.getTables().isEmpty()) {
-
ProxyContext.getInstance().getMetaData(schemaName).getRuleMetaData().getConfigurations().remove(encryptRuleConfig);
+ if (ruleConfig.getTables().isEmpty()) {
+
ProxyContext.getInstance().getMetaData(schemaName).getRuleMetaData().getConfigurations().remove(ruleConfig);
}
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropReadwriteSplittingRuleBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropReadwriteSplittingRuleBackendHandler.java
index ba08f67..a79f3d7 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropReadwriteSplittingRuleBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropReadwriteSplittingRuleBackendHandler.java
@@ -39,11 +39,11 @@ public final class DropReadwriteSplittingRuleBackendHandler
extends RDLBackendHa
@Override
public void before(final String schemaName, final
DropReadwriteSplittingRuleStatement sqlStatement) {
- Optional<ReadwriteSplittingRuleConfiguration> optional =
findRuleConfiguration(schemaName, ReadwriteSplittingRuleConfiguration.class);
- if (!optional.isPresent()) {
+ Optional<ReadwriteSplittingRuleConfiguration> ruleConfig =
findRuleConfiguration(schemaName, ReadwriteSplittingRuleConfiguration.class);
+ if (!ruleConfig.isPresent()) {
throw new ReadwriteSplittingRulesNotExistedException(schemaName,
sqlStatement.getRuleNames());
}
- Collection<String> existRuleNames =
optional.get().getDataSources().stream().map(ReadwriteSplittingDataSourceRuleConfiguration::getName).collect(Collectors.toList());
+ Collection<String> existRuleNames =
ruleConfig.get().getDataSources().stream().map(ReadwriteSplittingDataSourceRuleConfiguration::getName).collect(Collectors.toList());
Collection<String> notExistedRuleNames =
sqlStatement.getRuleNames().stream().filter(each ->
!existRuleNames.contains(each)).collect(Collectors.toList());
if (!notExistedRuleNames.isEmpty()) {
throw new ReadwriteSplittingRulesNotExistedException(schemaName,
sqlStatement.getRuleNames());
@@ -52,15 +52,15 @@ public final class DropReadwriteSplittingRuleBackendHandler
extends RDLBackendHa
@Override
public void doExecute(final String schemaName, final
DropReadwriteSplittingRuleStatement sqlStatement) {
- ReadwriteSplittingRuleConfiguration readwriteSplittingRuleConfig =
findRuleConfiguration(schemaName,
ReadwriteSplittingRuleConfiguration.class).get();
+ ReadwriteSplittingRuleConfiguration ruleConfig =
getRuleConfiguration(schemaName, ReadwriteSplittingRuleConfiguration.class);
sqlStatement.getRuleNames().forEach(each -> {
ReadwriteSplittingDataSourceRuleConfiguration
readwriteSplittingDataSourceRuleConfig
- =
readwriteSplittingRuleConfig.getDataSources().stream().filter(dataSource ->
each.equals(dataSource.getName())).findAny().get();
-
readwriteSplittingRuleConfig.getDataSources().remove(readwriteSplittingDataSourceRuleConfig);
-
readwriteSplittingRuleConfig.getLoadBalancers().remove(readwriteSplittingDataSourceRuleConfig.getLoadBalancerName());
+ = ruleConfig.getDataSources().stream().filter(dataSource
-> each.equals(dataSource.getName())).findAny().get();
+
ruleConfig.getDataSources().remove(readwriteSplittingDataSourceRuleConfig);
+
ruleConfig.getLoadBalancers().remove(readwriteSplittingDataSourceRuleConfig.getLoadBalancerName());
});
- if (readwriteSplittingRuleConfig.getDataSources().isEmpty()) {
-
ProxyContext.getInstance().getMetaData(schemaName).getRuleMetaData().getConfigurations().remove(readwriteSplittingRuleConfig);
+ if (ruleConfig.getDataSources().isEmpty()) {
+
ProxyContext.getInstance().getMetaData(schemaName).getRuleMetaData().getConfigurations().remove(ruleConfig);
}
}
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropShardingBindingTableRulesBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropShardingBindingTableRulesBackendHandler.java
index 927ace6..cbd3abd 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropShardingBindingTableRulesBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropShardingBindingTableRulesBackendHandler.java
@@ -35,14 +35,14 @@ public final class
DropShardingBindingTableRulesBackendHandler extends RDLBacken
@Override
public void before(final String schemaName, final
DropShardingBindingTableRulesStatement sqlStatement) {
- Optional<ShardingRuleConfiguration> shardingRuleConfiguration =
findRuleConfiguration(schemaName, ShardingRuleConfiguration.class);
- if (!shardingRuleConfiguration.isPresent() ||
shardingRuleConfiguration.get().getBindingTableGroups().isEmpty()) {
+ Optional<ShardingRuleConfiguration> ruleConfig =
findRuleConfiguration(schemaName, ShardingRuleConfiguration.class);
+ if (!ruleConfig.isPresent() ||
ruleConfig.get().getBindingTableGroups().isEmpty()) {
throw new ShardingBindingTableRulesNotExistsException(schemaName);
}
}
@Override
public void doExecute(final String schemaName, final
DropShardingBindingTableRulesStatement sqlStatement) {
- findRuleConfiguration(schemaName,
ShardingRuleConfiguration.class).get().getBindingTableGroups().clear();
+ getRuleConfiguration(schemaName,
ShardingRuleConfiguration.class).getBindingTableGroups().clear();
}
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropShardingBroadcastTableRulesBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropShardingBroadcastTableRulesBackendHandler.java
index f0a5b11..c34c6ec 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropShardingBroadcastTableRulesBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropShardingBroadcastTableRulesBackendHandler.java
@@ -35,14 +35,14 @@ public final class
DropShardingBroadcastTableRulesBackendHandler extends RDLBack
@Override
public void before(final String schemaName, final
DropShardingBroadcastTableRulesStatement sqlStatement) {
- Optional<ShardingRuleConfiguration> shardingRuleConfiguration =
findRuleConfiguration(schemaName, ShardingRuleConfiguration.class);
- if (!shardingRuleConfiguration.isPresent() ||
shardingRuleConfiguration.get().getBroadcastTables().isEmpty()) {
+ Optional<ShardingRuleConfiguration> ruleConfig =
findRuleConfiguration(schemaName, ShardingRuleConfiguration.class);
+ if (!ruleConfig.isPresent() ||
ruleConfig.get().getBroadcastTables().isEmpty()) {
throw new
ShardingBroadcastTableRulesNotExistsException(schemaName);
}
}
@Override
public void doExecute(final String schemaName, final
DropShardingBroadcastTableRulesStatement sqlStatement) {
- findRuleConfiguration(schemaName,
ShardingRuleConfiguration.class).get().getBroadcastTables().clear();
+ getRuleConfiguration(schemaName,
ShardingRuleConfiguration.class).getBroadcastTables().clear();
}
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropShardingTableRuleBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropShardingTableRuleBackendHandler.java
index e6c7729..a1d067a 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropShardingTableRuleBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropShardingTableRuleBackendHandler.java
@@ -44,16 +44,16 @@ public final class DropShardingTableRuleBackendHandler
extends RDLBackendHandler
@Override
public void before(final String schemaName, final
DropShardingTableRuleStatement sqlStatement) {
Collection<String> tableNames =
sqlStatement.getTableNames().stream().map(each ->
each.getIdentifier().getValue()).collect(Collectors.toList());
- Optional<ShardingRuleConfiguration> shardingRuleConfig =
findRuleConfiguration(schemaName, ShardingRuleConfiguration.class);
- if (!shardingRuleConfig.isPresent()) {
+ Optional<ShardingRuleConfiguration> ruleConfig =
findRuleConfiguration(schemaName, ShardingRuleConfiguration.class);
+ if (!ruleConfig.isPresent()) {
throw new ShardingTableRuleNotExistedException(schemaName,
tableNames);
}
- Collection<String> shardingTableNames =
getShardingTables(shardingRuleConfig.get());
+ Collection<String> shardingTableNames =
getShardingTables(ruleConfig.get());
Collection<String> notExistedTableNames =
tableNames.stream().filter(each ->
!shardingTableNames.contains(each)).collect(Collectors.toList());
if (!notExistedTableNames.isEmpty()) {
throw new ShardingTableRuleNotExistedException(schemaName,
notExistedTableNames);
}
- Collection<String> bindingTables =
getBindingTables(shardingRuleConfig.get());
+ Collection<String> bindingTables = getBindingTables(ruleConfig.get());
Collection<String> usedTableNames =
tableNames.stream().filter(bindingTables::contains).collect(Collectors.toList());
if (!usedTableNames.isEmpty()) {
throw new ShardingTableRulesInUsedException(usedTableNames);
@@ -62,9 +62,9 @@ public final class DropShardingTableRuleBackendHandler
extends RDLBackendHandler
@Override
public void doExecute(final String schemaName, final
DropShardingTableRuleStatement sqlStatement) {
- ShardingRuleConfiguration shardingRuleConfig =
findRuleConfiguration(schemaName, ShardingRuleConfiguration.class).get();
+ ShardingRuleConfiguration ruleConfig =
getRuleConfiguration(schemaName, ShardingRuleConfiguration.class);
for (String each : getDroppedTables(sqlStatement)) {
- dropShardingTable(shardingRuleConfig, each);
+ dropShardingTable(ruleConfig, each);
}
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/RDLBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/RDLBackendHandler.java
index bb15d90..9e9a1db 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/RDLBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/RDLBackendHandler.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.proxy.backend.text.distsql.rdl.impl;
+import com.google.common.base.Preconditions;
import
org.apache.shardingsphere.governance.core.registry.config.event.rule.RuleConfigurationsAlteredSQLNotificationEvent;
import org.apache.shardingsphere.infra.config.scope.SchemaRuleConfiguration;
import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
@@ -66,6 +67,12 @@ public abstract class RDLBackendHandler<T extends
SQLStatement> extends SchemaRe
.getRuleMetaData().getConfigurations().stream().filter(each ->
configRuleClass.isAssignableFrom(each.getClass())).map(each -> (R)
each).findFirst();
}
+ protected final <R extends SchemaRuleConfiguration> R
getRuleConfiguration(final String schemaName, final Class<R> configRuleClass) {
+ Optional<R> result = findRuleConfiguration(schemaName,
configRuleClass);
+ Preconditions.checkState(result.isPresent(), "Can not find rule type:
`%s`.", configRuleClass);
+ return result.get();
+ }
+
protected final Collection<String> getInvalidResources(final String
schemaName, final Collection<String> resources) {
return resources.stream().filter(each -> !isValidResource(schemaName,
each)).collect(Collectors.toSet());
}