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
