This is an automated email from the ASF dual-hosted git repository. chengzhang 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 ab7463b2090 Minor refactor for SQLFederationProcessor (#35347) ab7463b2090 is described below commit ab7463b20909474d11cd9b3a14456c889108bc07 Author: Zhengqiang Duan <duanzhengqi...@apache.org> AuthorDate: Fri May 9 08:50:06 2025 +0800 Minor refactor for SQLFederationProcessor (#35347) --- .../sqlfederation/engine/SQLFederationEngine.java | 10 +++++----- .../engine/processor/SQLFederationProcessor.java | 12 +++++------- .../processor/impl/StandardSQLFederationProcessor.java | 8 ++++---- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/SQLFederationEngine.java b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/SQLFederationEngine.java index 4a153528d0a..1de5a662efd 100644 --- a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/SQLFederationEngine.java +++ b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/SQLFederationEngine.java @@ -189,10 +189,10 @@ public final class SQLFederationEngine implements AutoCloseable { String databaseName = selectStatementContext.getTablesContext().getDatabaseNames().stream().findFirst().orElse(currentDatabaseName); String schemaName = selectStatementContext.getTablesContext().getSchemaName().orElse(currentSchemaName); SqlToRelConverter converter = creeateSQLToRelConverter(databaseName, schemaName, selectStatementContext.getDatabaseType(), processor.getConvention()); + schemaPlus = getSqlFederationSchema(converter, schemaName, queryContext.getSql()); + processor.prepare(prepareEngine, callback, databaseName, schemaName, federationContext, sqlFederationRule.getOptimizerContext(), schemaPlus); SQLFederationExecutionPlan executionPlan = compileQuery(converter, databaseName, schemaName, federationContext.getMetaData(), selectStatementContext, queryContext.getSql(), processor.getConvention()); - schemaPlus = getSqlFederationSchema(converter, schemaName, queryContext.getSql()); - processor.registerExecutor(prepareEngine, callback, databaseName, schemaName, federationContext, sqlFederationRule.getOptimizerContext(), schemaPlus); resultSet = processor.executePlan(prepareEngine, callback, executionPlan, converter, federationContext, schemaPlus); return resultSet; // CHECKSTYLE:OFF @@ -245,7 +245,7 @@ public final class SQLFederationEngine implements AutoCloseable { public void close() throws SQLException { Collection<SQLException> result = new LinkedList<>(); closeResultSet().ifPresent(result::add); - unregisterExecutor(); + release(); if (result.isEmpty()) { return; } @@ -265,9 +265,9 @@ public final class SQLFederationEngine implements AutoCloseable { return Optional.empty(); } - private void unregisterExecutor() { + private void release() { if (null != queryContext && null != schemaPlus) { - processor.unregisterExecutor(queryContext, schemaPlus); + processor.release(queryContext, schemaPlus); } } } diff --git a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/processor/SQLFederationProcessor.java b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/processor/SQLFederationProcessor.java index 680d261cfd3..7e81cdf21f9 100644 --- a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/processor/SQLFederationProcessor.java +++ b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/processor/SQLFederationProcessor.java @@ -38,7 +38,7 @@ import java.sql.ResultSet; public interface SQLFederationProcessor { /** - * Register executor. + * Prepare. * * @param prepareEngine prepare engine * @param callback callback @@ -48,18 +48,16 @@ public interface SQLFederationProcessor { * @param optimizerContext optimizer context * @param schemaPlus sql federation schema */ - default void registerExecutor(DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> prepareEngine, JDBCExecutorCallback<? extends ExecuteResult> callback, - String databaseName, String schemaName, SQLFederationContext federationContext, OptimizerContext optimizerContext, SchemaPlus schemaPlus) { - } + void prepare(DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> prepareEngine, JDBCExecutorCallback<? extends ExecuteResult> callback, + String databaseName, String schemaName, SQLFederationContext federationContext, OptimizerContext optimizerContext, SchemaPlus schemaPlus); /** - * Unregister executor. + * Release. * * @param queryContext query context * @param schemaPlus sql federation schema */ - default void unregisterExecutor(QueryContext queryContext, SchemaPlus schemaPlus) { - } + void release(QueryContext queryContext, SchemaPlus schemaPlus); /** * Execute plan. diff --git a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/processor/impl/StandardSQLFederationProcessor.java b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/processor/impl/StandardSQLFederationProcessor.java index d3938d715d5..8cae468854c 100644 --- a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/processor/impl/StandardSQLFederationProcessor.java +++ b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/processor/impl/StandardSQLFederationProcessor.java @@ -70,9 +70,9 @@ public final class StandardSQLFederationProcessor implements SQLFederationProces private final JDBCExecutor jdbcExecutor; @Override - public void registerExecutor(final DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> prepareEngine, final JDBCExecutorCallback<? extends ExecuteResult> callback, - final String databaseName, final String schemaName, final SQLFederationContext federationContext, final OptimizerContext optimizerContext, - final SchemaPlus schemaPlus) { + public void prepare(final DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> prepareEngine, final JDBCExecutorCallback<? extends ExecuteResult> callback, + final String databaseName, final String schemaName, final SQLFederationContext federationContext, final OptimizerContext optimizerContext, + final SchemaPlus schemaPlus) { if (null == schemaPlus) { return; } @@ -91,7 +91,7 @@ public final class StandardSQLFederationProcessor implements SQLFederationProces } @Override - public void unregisterExecutor(final QueryContext queryContext, final SchemaPlus schemaPlus) { + public void release(final QueryContext queryContext, final SchemaPlus schemaPlus) { Collection<SimpleTableSegment> simpleTables = queryContext.getSqlStatementContext() instanceof TableAvailable ? ((TableAvailable) queryContext.getSqlStatementContext()).getTablesContext().getSimpleTables() : Collections.emptyList();