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"));