This is an automated email from the ASF dual-hosted git repository.

zhangliang 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 0dae83150ad Refactor DatabaseRuleDefinitionExecuteEngine (#36130)
0dae83150ad is described below

commit 0dae83150ad6506502f20bd9de24584a5d3d65b3
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Jul 31 12:12:36 2025 +0800

    Refactor DatabaseRuleDefinitionExecuteEngine (#36130)
    
    * Refactor DatabaseRuleDefinitionExecuteEngine
    
    * Refactor DatabaseRuleDefinitionExecuteEngine
    
    * Refactor DatabaseRuleDefinitionExecuteEngine
---
 .../handler/engine/update/DistSQLUpdateExecuteEngine.java      |  5 +++--
 .../engine/database/DatabaseRuleDefinitionExecuteEngine.java   | 10 ++++++----
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/DistSQLUpdateExecuteEngine.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/DistSQLUpdateExecuteEngine.java
index e1020b77a88..0da78106f84 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/DistSQLUpdateExecuteEngine.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/DistSQLUpdateExecuteEngine.java
@@ -68,9 +68,10 @@ public final class DistSQLUpdateExecuteEngine {
     
     @SuppressWarnings("rawtypes")
     private void executeRuleDefinitionUpdate() throws SQLException {
-        Optional<DatabaseRuleDefinitionExecutor> databaseExecutor = 
DatabaseRuleDefinitionExecutorFactory.findInstance(sqlStatement, 
contextManager.getDatabase(databaseName));
+        ShardingSphereDatabase database = 
contextManager.getDatabase(databaseName);
+        Optional<DatabaseRuleDefinitionExecutor> databaseExecutor = 
DatabaseRuleDefinitionExecutorFactory.findInstance(sqlStatement, database);
         if (databaseExecutor.isPresent()) {
-            new 
DatabaseRuleDefinitionExecuteEngine((DatabaseRuleDefinitionStatement) 
sqlStatement, contextManager, databaseName, 
databaseExecutor.get()).executeUpdate();
+            new 
DatabaseRuleDefinitionExecuteEngine((DatabaseRuleDefinitionStatement) 
sqlStatement, contextManager, database, databaseExecutor.get()).executeUpdate();
         } else {
             new 
GlobalRuleDefinitionExecuteEngine((GlobalRuleDefinitionStatement) sqlStatement,
                     contextManager, 
TypedSPILoader.getService(GlobalRuleDefinitionExecutor.class, 
sqlStatement.getClass())).executeUpdate();
diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/DatabaseRuleDefinitionExecuteEngine.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/DatabaseRuleDefinitionExecuteEngine.java
index 91dc8da00a4..affbfc14e36 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/DatabaseRuleDefinitionExecuteEngine.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/DatabaseRuleDefinitionExecuteEngine.java
@@ -23,6 +23,7 @@ import 
org.apache.shardingsphere.distsql.handler.engine.update.rdl.rule.spi.data
 import 
org.apache.shardingsphere.distsql.handler.required.DistSQLExecutorRequiredChecker;
 import 
org.apache.shardingsphere.distsql.statement.type.rdl.rule.database.DatabaseRuleDefinitionStatement;
 import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 
@@ -39,28 +40,29 @@ public final class DatabaseRuleDefinitionExecuteEngine {
     
     private final ContextManager contextManager;
     
-    private final String databaseName;
+    private final ShardingSphereDatabase database;
     
     @SuppressWarnings("rawtypes")
     private final DatabaseRuleDefinitionExecutor executor;
     
     /**
      * Execute update.
+     *
      * @throws SQLException SQL Exception
      */
     @SuppressWarnings("unchecked")
     public void executeUpdate() throws SQLException {
         checkBeforeUpdate();
-        Optional<ShardingSphereRule> rule = 
contextManager.getDatabase(databaseName).getRuleMetaData().findSingleRule(executor.getRuleClass());
+        Optional<ShardingSphereRule> rule = 
database.getRuleMetaData().findSingleRule(executor.getRuleClass());
         if (getRefreshStatus(rule.isPresent())) {
             RuleConfiguration currentRuleConfig = 
rule.map(ShardingSphereRule::getConfiguration).orElse(null);
-            DatabaseRuleOperatorFactory.newInstance(contextManager, 
executor).operate(sqlStatement, contextManager.getDatabase(databaseName), 
currentRuleConfig);
+            DatabaseRuleOperatorFactory.newInstance(contextManager, 
executor).operate(sqlStatement, database, currentRuleConfig);
         }
     }
     
     @SuppressWarnings("unchecked")
     private void checkBeforeUpdate() {
-        new DistSQLExecutorRequiredChecker(executor).check(sqlStatement, 
contextManager, contextManager.getDatabase(databaseName));
+        new DistSQLExecutorRequiredChecker(executor).check(sqlStatement, 
contextManager, database);
         executor.checkBeforeUpdate(sqlStatement);
     }
     

Reply via email to