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