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 29545e675ce Refactor DistSQLUpdateExecuteEngine for lazy fetch 
database (#36418)
29545e675ce is described below

commit 29545e675ce0dbdd8c51408015e80507b53e946a
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Aug 27 02:17:02 2025 +0800

    Refactor DistSQLUpdateExecuteEngine for lazy fetch database (#36418)
    
    * Refactor DistSQLUpdateExecuteEngine for lazy fetch database
    
    * Refactor DistSQLUpdateExecuteEngine for lazy fetch database
    
    * Refactor DistSQLUpdateExecuteEngine for lazy fetch database
    
    * Refactor DistSQLUpdateExecuteEngine for lazy fetch database
---
 .../handler/update/CreateBroadcastTableRuleExecutorTest.java   |  1 +
 .../handler/update/DropBroadcastTableRuleExecutorTest.java     |  1 +
 .../distsql/handler/update/AlterEncryptRuleExecutorTest.java   |  1 +
 .../distsql/handler/update/CreateEncryptRuleExecutorTest.java  |  1 +
 .../distsql/handler/update/DropEncryptRuleExecutorTest.java    |  1 +
 .../mask/distsql/handler/update/AlterMaskRuleExecutorTest.java |  1 +
 .../distsql/handler/update/CreateMaskRuleExecutorTest.java     |  1 +
 .../mask/distsql/handler/update/DropMaskRuleExecutorTest.java  |  1 +
 .../handler/engine/update/DistSQLUpdateExecuteEngine.java      | 10 ++++++----
 .../distsql/handler/update/LoadSingleTableExecutorTest.java    |  1 +
 .../update/SetDefaultSingleTableStorageUnitExecutorTest.java   |  1 +
 .../handler/distsql/DistSQLBackendHandlerFactoryTest.java      |  1 +
 12 files changed, 17 insertions(+), 4 deletions(-)

diff --git 
a/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/CreateBroadcastTableRuleExecutorTest.java
 
b/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/CreateBroadcastTableRuleExecutorTest.java
index c2cdb801635..7315b2a2f28 100644
--- 
a/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/CreateBroadcastTableRuleExecutorTest.java
+++ 
b/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/CreateBroadcastTableRuleExecutorTest.java
@@ -104,6 +104,7 @@ class CreateBroadcastTableRuleExecutorTest {
         ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(database.getName()).thenReturn("foo_db");
         when(database.getRuleMetaData()).thenReturn(new RuleMetaData(null == 
rule ? Collections.emptyList() : Collections.singleton(rule)));
+        
when(result.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
         when(result.getDatabase("foo_db")).thenReturn(database);
         return result;
     }
diff --git 
a/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutorTest.java
 
b/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutorTest.java
index 5609508386d..6f82c951f47 100644
--- 
a/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutorTest.java
+++ 
b/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutorTest.java
@@ -68,6 +68,7 @@ class DropBroadcastTableRuleExecutorTest {
         ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(database.getName()).thenReturn("foo_db");
         when(database.getRuleMetaData()).thenReturn(new RuleMetaData(null == 
rule ? Collections.emptyList() : Collections.singleton(rule)));
+        
when(result.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
         when(result.getDatabase("foo_db")).thenReturn(database);
         return result;
     }
diff --git 
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutorTest.java
 
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutorTest.java
index e668bfaa4cc..5a3241796a3 100644
--- 
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutorTest.java
+++ 
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutorTest.java
@@ -108,6 +108,7 @@ class AlterEncryptRuleExecutorTest {
     
     private ContextManager mockContextManager(final EncryptRule rule) {
         ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
+        
when(result.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
         when(result.getDatabase("foo_db")).thenReturn(new 
ShardingSphereDatabase("foo_db", mock(), mock(), new 
RuleMetaData(Collections.singleton(rule)), Collections.emptyList()));
         return result;
     }
diff --git 
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleExecutorTest.java
 
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleExecutorTest.java
index 3f1aaa3b808..5237d5bdb59 100644
--- 
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleExecutorTest.java
+++ 
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleExecutorTest.java
@@ -161,6 +161,7 @@ class CreateEncryptRuleExecutorTest {
         when(database.getName()).thenReturn("foo_db");
         when(database.getRuleMetaData()).thenReturn(new 
RuleMetaData(Collections.singleton(rule)));
         ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
+        
when(result.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
         when(result.getDatabase("foo_db")).thenReturn(database);
         return result;
     }
diff --git 
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java
 
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java
index 7c73f389c29..40cc89b7e71 100644
--- 
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java
+++ 
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java
@@ -139,6 +139,7 @@ class DropEncryptRuleExecutorTest {
     private ContextManager mockContextManager(final EncryptRule rule) {
         ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         ShardingSphereDatabase database = new ShardingSphereDatabase("foo_db", 
mock(), mock(), new RuleMetaData(Collections.singleton(rule)), 
Collections.emptyList());
+        
when(result.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
         when(result.getDatabase("foo_db")).thenReturn(database);
         return result;
     }
diff --git 
a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/AlterMaskRuleExecutorTest.java
 
b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/AlterMaskRuleExecutorTest.java
index a61d0dc211f..2db77a27347 100644
--- 
a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/AlterMaskRuleExecutorTest.java
+++ 
b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/AlterMaskRuleExecutorTest.java
@@ -104,6 +104,7 @@ class AlterMaskRuleExecutorTest {
         when(database.getName()).thenReturn("foo_db");
         when(database.getRuleMetaData()).thenReturn(new 
RuleMetaData(Collections.singleton(rule)));
         ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
+        
when(result.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
         when(result.getDatabase("foo_db")).thenReturn(database);
         return result;
     }
diff --git 
a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleExecutorTest.java
 
b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleExecutorTest.java
index a7198215172..cd4a4a25dc0 100644
--- 
a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleExecutorTest.java
+++ 
b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleExecutorTest.java
@@ -122,6 +122,7 @@ class CreateMaskRuleExecutorTest {
         when(database.getName()).thenReturn("foo_db");
         when(database.getRuleMetaData()).thenReturn(new 
RuleMetaData(Collections.singleton(rule)));
         ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
+        
when(result.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
         when(result.getDatabase("foo_db")).thenReturn(database);
         return result;
     }
diff --git 
a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutorTest.java
 
b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutorTest.java
index 03aeeca0a9f..dc9c3bed3b5 100644
--- 
a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutorTest.java
+++ 
b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutorTest.java
@@ -101,6 +101,7 @@ class DropMaskRuleExecutorTest {
     private ContextManager mockContextManager(final MaskRule rule) {
         ShardingSphereDatabase database = new ShardingSphereDatabase("foo_db", 
mock(), mock(), new RuleMetaData(Collections.singleton(rule)), 
Collections.emptyList());
         ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
+        
when(result.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
         when(result.getDatabase("foo_db")).thenReturn(database);
         return result;
     }
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 cf5308e60d7..888b9246a71 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
@@ -69,10 +69,12 @@ public final class DistSQLUpdateExecuteEngine {
     
     @SuppressWarnings("rawtypes")
     private void executeRuleDefinitionUpdate() throws SQLException {
-        ShardingSphereDatabase database = 
contextManager.getDatabase(databaseName);
-        Optional<DatabaseRuleDefinitionExecutor> databaseExecutor = 
DatabaseRuleDefinitionExecutorFactory.findInstance(sqlStatement, database);
-        if (databaseExecutor.isPresent()) {
-            new 
DatabaseRuleDefinitionExecuteEngine((DatabaseRuleDefinitionStatement) 
sqlStatement, contextManager, database, databaseExecutor.get()).executeUpdate();
+        if 
(contextManager.getMetaDataContexts().getMetaData().containsDatabase(databaseName))
 {
+            ShardingSphereDatabase database = 
contextManager.getDatabase(databaseName);
+            Optional<DatabaseRuleDefinitionExecutor> databaseExecutor = 
DatabaseRuleDefinitionExecutorFactory.findInstance(sqlStatement, database);
+            if (databaseExecutor.isPresent()) {
+                new 
DatabaseRuleDefinitionExecuteEngine((DatabaseRuleDefinitionStatement) 
sqlStatement, contextManager, database, databaseExecutor.get()).executeUpdate();
+            }
         } else {
             GlobalRuleDefinitionExecutor globalExecutor = 
GlobalRuleDefinitionExecutorFactory.newInstance(sqlStatement, 
contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData());
             new 
GlobalRuleDefinitionExecuteEngine((GlobalRuleDefinitionStatement) sqlStatement, 
contextManager, globalExecutor).executeUpdate();
diff --git 
a/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableExecutorTest.java
 
b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableExecutorTest.java
index ed8c28c5b59..4eb3bd0c92b 100644
--- 
a/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableExecutorTest.java
+++ 
b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableExecutorTest.java
@@ -86,6 +86,7 @@ class LoadSingleTableExecutorTest {
     
     private ContextManager mockContextManager(final SingleRule rule) {
         ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
+        
when(result.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
         when(result.getDatabase("foo_db")).thenReturn(database);
         if (null == rule) {
             when(database.getRuleMetaData()).thenReturn(new 
RuleMetaData(Collections.emptyList()));
diff --git 
a/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/SetDefaultSingleTableStorageUnitExecutorTest.java
 
b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/SetDefaultSingleTableStorageUnitExecutorTest.java
index 3bddcf8af94..5bfb13f1bcc 100644
--- 
a/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/SetDefaultSingleTableStorageUnitExecutorTest.java
+++ 
b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/SetDefaultSingleTableStorageUnitExecutorTest.java
@@ -87,6 +87,7 @@ class SetDefaultSingleTableStorageUnitExecutorTest {
         ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(database.getName()).thenReturn("foo_db");
         when(database.getRuleMetaData()).thenReturn(new 
RuleMetaData(Collections.singleton(rule)));
+        
when(result.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
         when(result.getDatabase("foo_db")).thenReturn(database);
         return result;
     }
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
index 906067aa644..f1cd19a0e7a 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
@@ -109,6 +109,7 @@ class DistSQLBackendHandlerFactoryTest {
     
     private MetaDataContexts mockMetaDataContexts(final ShardingSphereDatabase 
database) {
         MetaDataContexts result = mock(MetaDataContexts.class, 
RETURNS_DEEP_STUBS);
+        when(result.getMetaData().containsDatabase("foo_db")).thenReturn(true);
         when(result.getMetaData().getDatabase("foo_db")).thenReturn(database);
         return result;
     }

Reply via email to