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

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

commit 31b14241389e7c502345e360c91efcd5bad10bf0
Author: Beyyes <[email protected]>
AuthorDate: Mon Jun 10 22:40:11 2024 +0800

    pefect test
---
 .../ExtractCommonPredicatesExpressionRewriter.java   |  2 +-
 .../plan/relational/analyzer/AnalyzerTest.java       | 20 +++++++++++++++++---
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/ir/ExtractCommonPredicatesExpressionRewriter.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/ir/ExtractCommonPredicatesExpressionRewriter.java
index 92a5f96e3e7..3789b793c29 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/ir/ExtractCommonPredicatesExpressionRewriter.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/ir/ExtractCommonPredicatesExpressionRewriter.java
@@ -163,7 +163,7 @@ public final class 
ExtractCommonPredicatesExpressionRewriter {
     }
 
     private Set<Expression> filterDeterministicPredicates(List<Expression> 
predicates) {
-      return predicates.stream().filter(expression -> 
isDeterministic(expression)).collect(toSet());
+      return 
predicates.stream().filter(DeterminismEvaluator::isDeterministic).collect(toSet());
     }
 
     private static <T> List<T> removeAll(Collection<T> collection, 
Collection<T> elementsToRemove) {
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/AnalyzerTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/AnalyzerTest.java
index a2a3b56fc8d..2006ea1ef5c 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/AnalyzerTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/AnalyzerTest.java
@@ -300,7 +300,7 @@ public class AnalyzerTest {
             context, metadata, sessionInfo, getFakePartitionFetcher(), 
WarningCollector.NOOP);
     logicalQueryPlan = logicalPlanner.plan(actualAnalysis);
     rootNode = logicalQueryPlan.getRootNode();
-    PlanNode tableScanNode = 
rootNode.getChildren().get(0).getChildren().get(0);
+    tableScanNode = (TableScanNode) 
rootNode.getChildren().get(0).getChildren().get(0);
     assertEquals(
         Arrays.asList("time", "tag1", "attr1", "s1"), 
tableScanNode.getOutputColumnNames());
 
@@ -315,7 +315,7 @@ public class AnalyzerTest {
             context, metadata, sessionInfo, getFakePartitionFetcher(), 
WarningCollector.NOOP);
     logicalQueryPlan = logicalPlanner.plan(actualAnalysis);
     rootNode = logicalQueryPlan.getRootNode();
-    tableScanNode = rootNode.getChildren().get(0).getChildren().get(0);
+    tableScanNode = (TableScanNode) 
rootNode.getChildren().get(0).getChildren().get(0);
     assertEquals(
         Arrays.asList("time", "tag1", "tag2", "attr1", "s1", "s2"),
         tableScanNode.getOutputColumnNames());
@@ -330,10 +330,24 @@ public class AnalyzerTest {
                 context, metadata, sessionInfo, getFakePartitionFetcher(), 
WarningCollector.NOOP)
             .plan(actualAnalysis);
     rootNode = logicalQueryPlan.getRootNode();
-    tableScanNode = rootNode.getChildren().get(0).getChildren().get(0);
+    tableScanNode = (TableScanNode) 
rootNode.getChildren().get(0).getChildren().get(0);
     assertEquals(
         Arrays.asList("time", "tag1", "attr2", "s1", "s2", "s3"),
         tableScanNode.getOutputColumnNames());
+
+    // 4. project with not all attributes, to test the rightness of 
PruneUnUsedColumns
+    sql = "SELECT tag2, attr2, s2 FROM table1";
+    actualAnalysis = analyzeSQL(sql, metadata);
+    context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
+    logicalQueryPlan =
+        new LogicalPlanner(
+                context, metadata, sessionInfo, getFakePartitionFetcher(), 
WarningCollector.NOOP)
+            .plan(actualAnalysis);
+    rootNode = logicalQueryPlan.getRootNode();
+    tableScanNode = (TableScanNode) 
rootNode.getChildren().get(0).getChildren().get(0);
+    assertEquals(
+        Arrays.asList("time", "tag2", "attr2", "s2"), 
tableScanNode.getOutputColumnNames());
+    assertEquals(2, tableScanNode.getIdAndAttributeIndexMap().size());
   }
 
   @Test

Reply via email to