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());
     }

Reply via email to