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 1afc200c6d9 Refactor SelectStatementBinder (#32048) 1afc200c6d9 is described below commit 1afc200c6d915f6c400864749f25f73b435c51ea Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Tue Jul 9 23:25:42 2024 +0800 Refactor SelectStatementBinder (#32048) --- .../segment/combine/CombineSegmentBinder.java | 4 +- .../infra/binder/statement/SQLStatementBinder.java | 4 +- .../statement/dml/SelectStatementBinder.java | 58 +++++++++++----------- 3 files changed, 33 insertions(+), 33 deletions(-) diff --git a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/combine/CombineSegmentBinder.java b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/combine/CombineSegmentBinder.java index cc76a637d8a..d2e83429fe8 100644 --- a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/combine/CombineSegmentBinder.java +++ b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/combine/CombineSegmentBinder.java @@ -46,8 +46,8 @@ public final class CombineSegmentBinder { ShardingSphereMetaData metaData = statementBinderContext.getMetaData(); String currentDatabaseName = statementBinderContext.getCurrentDatabaseName(); Map<String, TableSegmentBinderContext> externalTableBinderContexts = statementBinderContext.getExternalTableBinderContexts(); - SelectStatement boundedLeftSelect = new SelectStatementBinder().bindWithExternalTableContexts(segment.getLeft().getSelect(), metaData, currentDatabaseName, externalTableBinderContexts); - SelectStatement boundedRightSelect = new SelectStatementBinder().bindWithExternalTableContexts(segment.getRight().getSelect(), metaData, currentDatabaseName, externalTableBinderContexts); + SelectStatement boundedLeftSelect = new SelectStatementBinder().bind(segment.getLeft().getSelect(), metaData, currentDatabaseName, externalTableBinderContexts); + SelectStatement boundedRightSelect = new SelectStatementBinder().bind(segment.getRight().getSelect(), metaData, currentDatabaseName, externalTableBinderContexts); SubquerySegment boundedLeft = new SubquerySegment(segment.getLeft().getStartIndex(), segment.getLeft().getStopIndex(), segment.getLeft().getText()); boundedLeft.setSelect(boundedLeftSelect); boundedLeft.setSubqueryType(segment.getLeft().getSubqueryType()); diff --git a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/SQLStatementBinder.java b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/SQLStatementBinder.java index a6fc368f2c5..54280df826e 100644 --- a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/SQLStatementBinder.java +++ b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/SQLStatementBinder.java @@ -28,12 +28,12 @@ import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatemen public interface SQLStatementBinder<T extends SQLStatement> { /** - * Bind SQL statement with metadata. + * Bind SQL statement. * * @param sqlStatement SQL statement * @param metaData meta data * @param currentDatabaseName current database name - * @return bounded SQL statement + * @return bound SQL statement */ T bind(T sqlStatement, ShardingSphereMetaData metaData, String currentDatabaseName); } diff --git a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/SelectStatementBinder.java b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/SelectStatementBinder.java index 66b8867e762..a663d2f6945 100644 --- a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/SelectStatementBinder.java +++ b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/SelectStatementBinder.java @@ -41,6 +41,35 @@ import java.util.Optional; */ public final class SelectStatementBinder implements SQLStatementBinder<SelectStatement> { + /** + * Bind correlate subquery select statement. + * + * @param sqlStatement subquery select statement + * @param metaData meta data + * @param currentDatabaseName current database name + * @param outerTableBinderContexts outer select statement table binder contexts + * @param externalTableBinderContexts external table binder contexts + * @return bounded correlate subquery select statement + */ + public SelectStatement bindCorrelateSubquery(final SelectStatement sqlStatement, final ShardingSphereMetaData metaData, final String currentDatabaseName, + final Map<String, TableSegmentBinderContext> outerTableBinderContexts, final Map<String, TableSegmentBinderContext> externalTableBinderContexts) { + return bind(sqlStatement, metaData, currentDatabaseName, outerTableBinderContexts, externalTableBinderContexts); + } + + /** + * Bind with external table contexts. + * + * @param statement select statement + * @param metaData meta data + * @param currentDatabaseName current database name + * @param externalTableContexts external table contexts + * @return select statement + */ + public SelectStatement bind(final SelectStatement statement, final ShardingSphereMetaData metaData, final String currentDatabaseName, + final Map<String, TableSegmentBinderContext> externalTableContexts) { + return bind(statement, metaData, currentDatabaseName, Collections.emptyMap(), externalTableContexts); + } + @Override public SelectStatement bind(final SelectStatement sqlStatement, final ShardingSphereMetaData metaData, final String currentDatabaseName) { return bind(sqlStatement, metaData, currentDatabaseName, Collections.emptyMap(), Collections.emptyMap()); @@ -77,33 +106,4 @@ public final class SelectStatementBinder implements SQLStatementBinder<SelectSta result.getCommentSegments().addAll(sqlStatement.getCommentSegments()); return result; } - - /** - * Bind correlate subquery select statement. - * - * @param sqlStatement subquery select statement - * @param metaData meta data - * @param currentDatabaseName current database name - * @param outerTableBinderContexts outer select statement table binder contexts - * @param externalTableBinderContexts external table binder contexts - * @return bounded correlate subquery select statement - */ - public SelectStatement bindCorrelateSubquery(final SelectStatement sqlStatement, final ShardingSphereMetaData metaData, final String currentDatabaseName, - final Map<String, TableSegmentBinderContext> outerTableBinderContexts, final Map<String, TableSegmentBinderContext> externalTableBinderContexts) { - return bind(sqlStatement, metaData, currentDatabaseName, outerTableBinderContexts, externalTableBinderContexts); - } - - /** - * Bind with external table contexts. - * - * @param statement select statement - * @param metaData meta data - * @param currentDatabaseName current database name - * @param externalTableContexts external table contexts - * @return select statement - */ - public SelectStatement bindWithExternalTableContexts(final SelectStatement statement, final ShardingSphereMetaData metaData, final String currentDatabaseName, - final Map<String, TableSegmentBinderContext> externalTableContexts) { - return bind(statement, metaData, currentDatabaseName, Collections.emptyMap(), externalTableContexts); - } }