This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 06797285e3f Make column-prune not effective for
InformationSchemaTableScanNode
06797285e3f is described below
commit 06797285e3f1b08c1275bff717ec03870d62801c
Author: Weihao Li <[email protected]>
AuthorDate: Tue Dec 31 19:36:06 2024 +0800
Make column-prune not effective for InformationSchemaTableScanNode
---
.../iterative/rule/PruneTableScanColumns.java | 13 ++++---------
.../plan/relational/analyzer/ShowQueriesTest.java | 21 +++++++++++++++++++++
2 files changed, 25 insertions(+), 9 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/PruneTableScanColumns.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/PruneTableScanColumns.java
index bd94b448993..c9c577300e6 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/PruneTableScanColumns.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/PruneTableScanColumns.java
@@ -102,15 +102,10 @@ public class PruneTableScanColumns extends
ProjectOffPushDownRule<TableScanNode>
deviceTableScanNode.getPushDownOffset(),
deviceTableScanNode.isPushLimitToEachDevice()));
} else if (node instanceof InformationSchemaTableScanNode) {
- return Optional.of(
- new InformationSchemaTableScanNode(
- node.getPlanNodeId(),
- node.getQualifiedObjectName(),
- newOutputs,
- newAssignments,
- node.getPushDownPredicate(),
- node.getPushDownLimit(),
- node.getPushDownOffset()));
+ // For the convenience of process in execution stage, column-prune for
+ // InformationSchemaTableScanNode is
+ // not supported now.
+ return Optional.empty();
} else {
throw new UnsupportedOperationException(
"Unknown TableScanNode type: " + node.getClass().getSimpleName());
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/ShowQueriesTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/ShowQueriesTest.java
index e08cc5fae3e..bdf44401aad 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/ShowQueriesTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/ShowQueriesTest.java
@@ -40,6 +40,7 @@ import static
org.apache.iotdb.db.queryengine.plan.relational.planner.assertions
import static
org.apache.iotdb.db.queryengine.plan.relational.planner.assertions.PlanMatchPattern.mergeSort;
import static
org.apache.iotdb.db.queryengine.plan.relational.planner.assertions.PlanMatchPattern.offset;
import static
org.apache.iotdb.db.queryengine.plan.relational.planner.assertions.PlanMatchPattern.output;
+import static
org.apache.iotdb.db.queryengine.plan.relational.planner.assertions.PlanMatchPattern.project;
import static
org.apache.iotdb.db.queryengine.plan.relational.planner.assertions.PlanMatchPattern.sort;
public class ShowQueriesTest {
@@ -118,4 +119,24 @@ public class ShowQueriesTest {
planTester.getFragmentPlan(2),
sort(infoSchemaTableScan("information_schema.queries",
Optional.of(2))));
}
+
+ @Test
+ public void testNonSelectAll() {
+ // Optimizer column-prune for InformationSchemaTableScanNode is not
supported now.
+ LogicalQueryPlan logicalQueryPlan =
+ planTester.createPlan("select query_id from
information_schema.queries");
+ assertPlan(
+ logicalQueryPlan,
+ output(
+ project(
+ infoSchemaTableScan(
+ "information_schema.queries",
+ Optional.empty(),
+ ImmutableList.of(
+ QUERY_ID_TABLE_MODEL,
+ START_TIME_TABLE_MODEL,
+ DATA_NODE_ID_TABLE_MODEL,
+ ELAPSED_TIME_TABLE_MODEL,
+ STATEMENT.toLowerCase(Locale.ENGLISH))))));
+ }
}