This is an automated email from the ASF dual-hosted git repository.

caogaofei pushed a commit to branch beyyes/TableModelGrammar0624
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 259334c83abf3e7f29a6e72e89091085075ff387
Author: Beyyes <[email protected]>
AuthorDate: Mon Jun 24 17:35:30 2024 +0800

    query process will not invoke setDataPartition method of Analysis
---
 .../plan/relational/analyzer/Analysis.java            | 19 +++++++++++--------
 .../relational/planner/optimizations/IndexScan.java   | 13 ++++---------
 2 files changed, 15 insertions(+), 17 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analysis.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analysis.java
index 065260c9899..8bf1b387f28 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analysis.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analysis.java
@@ -167,6 +167,9 @@ public class Analysis implements IAnalysis {
   // indicate is there a value filter
   private boolean hasValueFilter = false;
 
+  // if emptyDataSource, there is no need to execute the query in BE
+  private boolean emptyDataSource = false;
+
   public DataPartition getDataPartition() {
     return dataPartition;
   }
@@ -580,6 +583,14 @@ public class Analysis implements IAnalysis {
     this.hasValueFilter = hasValueFilter;
   }
 
+  public boolean isEmptyDataSource() {
+    return emptyDataSource;
+  }
+
+  public void setEmptyDataSource(boolean emptyDataSource) {
+    this.emptyDataSource = emptyDataSource;
+  }
+
   @Override
   public boolean isFailed() {
     return false;
@@ -603,14 +614,6 @@ public class Analysis implements IAnalysis {
     return finishQueryAfterAnalyze;
   }
 
-  private boolean hasDataSource() {
-    return (dataPartition != null && !dataPartition.isEmpty());
-    //            || (schemaPartition != null && !schemaPartition.isEmpty())
-    //            || statement instanceof ShowQueriesStatement
-    //            || (statement instanceof QueryStatement
-    //            && ((QueryStatement) statement).isAggregationQuery());
-  }
-
   @Override
   public TsBlock constructResultForMemorySource(MPPQueryContext context) {
     requireNonNull(getStatement(), "root statement is analysis is null");
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/IndexScan.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/IndexScan.java
index a2a0e725d6b..e567b733437 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/IndexScan.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/IndexScan.java
@@ -58,23 +58,17 @@ public class IndexScan implements RelationalPlanOptimizer {
       Metadata metadata,
       SessionInfo sessionInfo,
       MPPQueryContext queryContext) {
-    return planNode.accept(new Rewriter(metadata, sessionInfo, analysis, 
queryContext), null);
+    return planNode.accept(new Rewriter(metadata, analysis, queryContext), 
null);
   }
 
   private static class Rewriter extends PlanVisitor<PlanNode, Void> {
 
     private final Metadata metadata;
-    private final SessionInfo sessionInfo;
     private final Analysis analysis;
     private final MPPQueryContext queryContext;
 
-    Rewriter(
-        Metadata metadata,
-        SessionInfo sessionInfo,
-        Analysis analysis,
-        MPPQueryContext queryContext) {
+    Rewriter(Metadata metadata, Analysis analysis, MPPQueryContext 
queryContext) {
       this.metadata = metadata;
-      this.sessionInfo = sessionInfo;
       this.analysis = analysis;
       this.queryContext = queryContext;
     }
@@ -105,12 +99,12 @@ public class IndexScan implements RelationalPlanOptimizer {
       node.setDeviceEntries(deviceEntries);
       if (deviceEntries.isEmpty()) {
         analysis.setFinishQueryAfterAnalyze();
+        analysis.setEmptyDataSource(true);
       } else {
         String treeModelDatabase = "root." + 
node.getQualifiedObjectName().getDatabaseName();
         DataPartition dataPartition =
             fetchDataPartitionByDevices(
                 deviceEntries, treeModelDatabase, 
queryContext.getGlobalTimeFilter());
-        analysis.setDataPartition(dataPartition);
 
         if (dataPartition.getDataPartitionMap().size() > 1) {
           throw new IllegalStateException(
@@ -119,6 +113,7 @@ public class IndexScan implements RelationalPlanOptimizer {
 
         if (dataPartition.getDataPartitionMap().isEmpty()) {
           analysis.setFinishQueryAfterAnalyze();
+          analysis.setEmptyDataSource(true);
         } else {
           Set<TRegionReplicaSet> regionReplicaSet = new HashSet<>();
           for (Map.Entry<

Reply via email to