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

Reply via email to