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 1fc3eae29b4 Fix TypeProvider and AggregationDescriptor serde in
Templated Query
1fc3eae29b4 is described below
commit 1fc3eae29b4eafe6bc88840dce2a79c0036b73ee
Author: Weihao Li <[email protected]>
AuthorDate: Tue Jun 17 18:38:31 2025 +0800
Fix TypeProvider and AggregationDescriptor serde in Templated Query
---
.../apache/iotdb/db/queryengine/plan/analyze/TypeProvider.java | 8 +++++++-
.../iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java | 8 ++------
.../plan/node/source/AlignedSeriesAggregationScanNode.java | 6 ++++++
3 files changed, 15 insertions(+), 7 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TypeProvider.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TypeProvider.java
index da39e926815..4dc2d5a4ae0 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TypeProvider.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TypeProvider.java
@@ -26,6 +26,7 @@ import com.google.common.collect.ImmutableMap;
import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.read.common.type.Type;
import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
import java.io.DataOutputStream;
import java.io.IOException;
@@ -58,7 +59,12 @@ public class TypeProvider {
}
public TSDataType getTreeModelType(String symbol) {
- return treeModelTypeMap.get(symbol);
+ TSDataType type = treeModelTypeMap.get(symbol);
+ if (templatedInfo == null || type != null) {
+ return type;
+ }
+ IMeasurementSchema schema = templatedInfo.getSchemaMap().get(symbol);
+ return schema == null ? null : schema.getType();
}
public void setTreeModelType(String symbol, TSDataType dataType) {
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
index bdc171a98a9..a353ed665ac 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
@@ -698,18 +698,14 @@ public class OperatorTreeGenerator extends
PlanVisitor<Operator, LocalExecutionP
if (context.isBuildPlanUseTemplate()) {
Ordering scanOrder = context.getTemplatedInfo().getScanOrder();
- List<AggregationDescriptor> aggregationDescriptors;
- if (node.getDescriptorType() == 0 || node.getDescriptorType() == 2) {
- aggregationDescriptors =
context.getTemplatedInfo().getAscendingDescriptorList();
- } else {
+ if (node.getDescriptorType() == 1) {
scanOrder = scanOrder.reverse();
- aggregationDescriptors =
context.getTemplatedInfo().getDescendingDescriptorList();
}
return constructAlignedSeriesAggregationScanOperator(
node.getPlanNodeId(),
node.getAlignedPath(),
- aggregationDescriptors,
+ node.getAggregationDescriptorList(),
context.getTemplatedInfo().getPushDownPredicate(),
scanOrder,
context.getTemplatedInfo().getGroupByTimeParameter(),
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesAggregationScanNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesAggregationScanNode.java
index b16b723c44b..d81ca0c92bd 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesAggregationScanNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesAggregationScanNode.java
@@ -33,6 +33,7 @@ import
org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeUtil;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
import
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.AggregationNode;
import
org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationDescriptor;
+import
org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationStep;
import
org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
@@ -286,6 +287,7 @@ public class AlignedSeriesAggregationScanNode extends
SeriesAggregationSourceNod
ReadWriteIOUtils.write(node, stream);
}
ReadWriteIOUtils.write(descriptorType, stream);
+ aggregationDescriptorList.get(0).getStep().serialize(stream);
}
public static AlignedSeriesAggregationScanNode deserializeUseTemplate(
@@ -306,7 +308,11 @@ public class AlignedSeriesAggregationScanNode extends
SeriesAggregationSourceNod
aggregationDescriptorList =
typeProvider.getTemplatedInfo().getAscendingDescriptorList();
} else if (descriptorType == 1) {
aggregationDescriptorList =
typeProvider.getTemplatedInfo().getDescendingDescriptorList();
+ } else {
+ throw new IllegalStateException("Unexpected descriptorType: " +
descriptorType);
}
+ AggregationStep step = AggregationStep.deserialize(byteBuffer);
+ aggregationDescriptorList.forEach(aggregationDescriptor ->
aggregationDescriptor.setStep(step));
return new AlignedSeriesAggregationScanNode(
planNodeId,