You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2024/07/09 15:25:49 UTC
(shardingsphere) branch master updated: Refactor SelectStatementBinder (#32048)
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 <zh...@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);
- }
}