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

menghaoranss 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 6e3639ef5bc Use database default schema in preview executor (#39593)
6e3639ef5bc is described below

commit 6e3639ef5bc0a236fa7783edbb496c6c8a0c7cfb
Author: Haoran Meng <[email protected]>
AuthorDate: Mon Aug 24 21:54:14 2026 +0800

    Use database default schema in preview executor (#39593)
---
 .../proxy/backend/handler/distsql/rul/PreviewExecutor.java       | 4 +---
 .../proxy/backend/handler/distsql/rul/PreviewExecutorTest.java   | 9 +++++++--
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/PreviewExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/PreviewExecutor.java
index 0ca8790ee7a..97a79d6ca70 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/PreviewExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/PreviewExecutor.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.proxy.backend.handler.distsql.rul;
 import com.google.common.base.Preconditions;
 import lombok.Setter;
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
-import 
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
 import 
org.apache.shardingsphere.distsql.handler.aware.DistSQLExecutorConnectionContextAware;
 import 
org.apache.shardingsphere.distsql.handler.aware.DistSQLExecutorDatabaseAware;
 import 
org.apache.shardingsphere.distsql.handler.engine.DistSQLConnectionContext;
@@ -106,8 +105,7 @@ public final class PreviewExecutor implements 
DistSQLQueryExecutor<PreviewStatem
     }
     
     private String getSchemaName(final SQLStatementContext 
sqlStatementContext, final ShardingSphereDatabase database) {
-        String defaultSchemaName = new 
DatabaseTypeRegistry(sqlStatementContext.getSqlStatement().getDatabaseType()).getDefaultSchemaName(database.getName());
-        return 
sqlStatementContext.getTablesContext().getSchemaName().orElse(defaultSchemaName);
+        return 
sqlStatementContext.getTablesContext().getSchemaName().orElseGet(database::getDefaultSchemaName);
     }
     
     private Collection<ExecutionUnit> getExecutionUnits(final ContextManager 
contextManager, final String schemaName, final ShardingSphereMetaData metaData, 
final QueryContext queryContext) {
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/PreviewExecutorTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/PreviewExecutorTest.java
index bd90c43d6d7..a044e78fbc1 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/PreviewExecutorTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/PreviewExecutorTest.java
@@ -154,7 +154,9 @@ class PreviewExecutorTest {
     @Test
     void assertGetRowsWithCursorAttributeAndNotCursorHeld() {
         HintValueContext hintValueContext = new HintValueContext();
-        executor.setDatabase(mockCompleteDatabase());
+        ShardingSphereDatabase database = mockCompleteDatabase();
+        when(database.getDefaultSchemaName()).thenReturn("foo_default_schema");
+        executor.setDatabase(database);
         executor.setConnectionContext(mockConnectionContext(hintValueContext, 
new ConnectionContext(Collections::emptyList), 
mock(DatabaseConnectionManager.class)));
         SQLStatement sqlStatement = mockSQLStatement(new 
CursorSQLStatementAttribute(null));
         SQLStatementContext sqlStatementContext = 
mock(SQLStatementContext.class, RETURNS_DEEP_STUBS);
@@ -166,7 +168,10 @@ class PreviewExecutorTest {
                         mockConstruction(SQLBindEngine.class, (mock, context) 
-> when(mock.bind(any(SQLStatement.class))).thenReturn(sqlStatementContext));
                 MockedConstruction<JDBCExecutor> ignoredJDBCExecutor = 
mockConstruction(JDBCExecutor.class);
                 MockedConstruction<SQLFederationEngine> 
ignoredFederationEngine =
-                        mockConstruction(SQLFederationEngine.class, (mock, 
context) -> when(mock.decide(any(QueryContext.class), 
any(RuleMetaData.class))).thenReturn(false));
+                        mockConstruction(SQLFederationEngine.class, (mock, 
context) -> {
+                            assertThat(context.arguments().get(1), 
is("foo_default_schema"));
+                            when(mock.decide(any(QueryContext.class), 
any(RuleMetaData.class))).thenReturn(false);
+                        });
                 MockedConstruction<KernelProcessor> ignoredKernelProcessor = 
mockConstruction(KernelProcessor.class,
                         (mock, context) -> 
when(mock.generateExecutionContext(any(QueryContext.class), 
any(RuleMetaData.class), 
any(ConfigurationProperties.class))).thenReturn(executionContext))) {
             assertThat(executor.getRows(new PreviewStatement("SELECT 1"), 
contextManager).iterator().next().getCell(1), is("foo_ds"));

Reply via email to