You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2025/07/31 04:12:43 UTC

(shardingsphere) branch master updated: Refactor DatabaseRuleDefinitionExecuteEngine (#36130)

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 <zh...@apache.org>
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);
     }