This is an automated email from the ASF dual-hosted git repository.
sunnianjun 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 f556c4297a2 Refactor SelectStatementContext (#32867)
f556c4297a2 is described below
commit f556c4297a2bace94c10237ce71e3b49ec9e44a6
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Sep 14 16:42:08 2024 +0800
Refactor SelectStatementContext (#32867)
* Refactor SelectStatementContext
* Refactor SelectStatementContext
---
.../statement/dml/SelectStatementContext.java | 90 +++++++++++-----------
1 file changed, 45 insertions(+), 45 deletions(-)
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContext.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContext.java
index 5a7588baca4..e511b6af62e 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContext.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContext.java
@@ -128,6 +128,33 @@ public final class SelectStatementContext extends
CommonSQLStatementContext impl
containsEnhancedTable = isContainsEnhancedTable(metaData,
tablesContext.getDatabaseNames(), currentDatabaseName);
}
+ private void extractWhereSegments(final Collection<WhereSegment>
whereSegments, final SelectStatement selectStatement) {
+ selectStatement.getWhere().ifPresent(whereSegments::add);
+
whereSegments.addAll(WhereExtractUtils.getSubqueryWhereSegments(selectStatement));
+
whereSegments.addAll(WhereExtractUtils.getJoinWhereSegments(selectStatement));
+ }
+
+ private Collection<TableSegment> getAllTableSegments(final
Collection<TableSegment> inheritedTables) {
+ TableExtractor tableExtractor = new TableExtractor();
+ appendInheritedSimpleTables(inheritedTables, tableExtractor);
+ tableExtractor.extractTablesFromSelect(getSqlStatement());
+ Collection<TableSegment> result = new
LinkedList<>(tableExtractor.getRewriteTables());
+ for (TableSegment each : tableExtractor.getTableContext()) {
+ if (each instanceof SubqueryTableSegment) {
+ result.add(each);
+ }
+ }
+ return result;
+ }
+
+ private void appendInheritedSimpleTables(final Collection<TableSegment>
inheritedTables, final TableExtractor tableExtractor) {
+ for (TableSegment each : inheritedTables) {
+ if (each instanceof SimpleTableSegment) {
+ tableExtractor.getTableContext().add(each);
+ }
+ }
+ }
+
private boolean isContainsEnhancedTable(final ShardingSphereMetaData
metaData, final Collection<String> databaseNames, final String
currentDatabaseName) {
for (String each : databaseNames) {
if (isContainsEnhancedTable(metaData, each,
getTablesContext().getTableNames())) {
@@ -350,6 +377,24 @@ public final class SelectStatementContext extends
CommonSQLStatementContext impl
return Optional.empty();
}
+ /**
+ * Judge whether sql statement contains table subquery segment or not.
+ *
+ * @return whether sql statement contains table subquery segment or not
+ */
+ public boolean containsTableSubquery() {
+ return getSqlStatement().getFrom().isPresent() &&
getSqlStatement().getFrom().get() instanceof SubqueryTableSegment ||
getSqlStatement().getWithSegment().isPresent();
+ }
+
+ /**
+ * Judge whether contains derived projections.
+ *
+ * @return contains derived projections or not
+ */
+ public boolean containsDerivedProjections() {
+ return containsEnhancedTable &&
!projectionsContext.getExpandProjections().isEmpty();
+ }
+
@Override
public SelectStatement getSqlStatement() {
return (SelectStatement) super.getSqlStatement();
@@ -370,51 +415,6 @@ public final class SelectStatementContext extends
CommonSQLStatementContext impl
return joinConditions;
}
- private void extractWhereSegments(final Collection<WhereSegment>
whereSegments, final SelectStatement selectStatement) {
- selectStatement.getWhere().ifPresent(whereSegments::add);
-
whereSegments.addAll(WhereExtractUtils.getSubqueryWhereSegments(selectStatement));
-
whereSegments.addAll(WhereExtractUtils.getJoinWhereSegments(selectStatement));
- }
-
- private Collection<TableSegment> getAllTableSegments(final
Collection<TableSegment> inheritedTables) {
- TableExtractor tableExtractor = new TableExtractor();
- appendInheritedSimpleTables(inheritedTables, tableExtractor);
- tableExtractor.extractTablesFromSelect(getSqlStatement());
- Collection<TableSegment> result = new
LinkedList<>(tableExtractor.getRewriteTables());
- for (TableSegment each : tableExtractor.getTableContext()) {
- if (each instanceof SubqueryTableSegment) {
- result.add(each);
- }
- }
- return result;
- }
-
- private void appendInheritedSimpleTables(final Collection<TableSegment>
inheritedTables, final TableExtractor tableExtractor) {
- for (TableSegment each : inheritedTables) {
- if (each instanceof SimpleTableSegment) {
- tableExtractor.getTableContext().add(each);
- }
- }
- }
-
- /**
- * Judge whether sql statement contains table subquery segment or not.
- *
- * @return whether sql statement contains table subquery segment or not
- */
- public boolean containsTableSubquery() {
- return getSqlStatement().getFrom().isPresent() &&
getSqlStatement().getFrom().get() instanceof SubqueryTableSegment ||
getSqlStatement().getWithSegment().isPresent();
- }
-
- /**
- * Judge whether contains derived projections.
- *
- * @return contains derived projections or not
- */
- public boolean containsDerivedProjections() {
- return containsEnhancedTable &&
!projectionsContext.getExpandProjections().isEmpty();
- }
-
@Override
public void setUpParameters(final List<Object> params) {
paginationContext = new
PaginationContextEngine(getDatabaseType()).createPaginationContext(getSqlStatement(),
projectionsContext, params, whereSegments);