Skip to content

Commit dc5a36e

Browse files
authored
[To dev/1.3]Fix TypeProvider and AggregationDescriptor serde in Templated Query
1 parent d799098 commit dc5a36e

3 files changed

Lines changed: 15 additions & 7 deletions

File tree

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TypeProvider.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import org.apache.tsfile.enums.TSDataType;
2323
import org.apache.tsfile.utils.ReadWriteIOUtils;
24+
import org.apache.tsfile.write.schema.IMeasurementSchema;
2425

2526
import java.io.DataOutputStream;
2627
import java.io.IOException;
@@ -49,7 +50,12 @@ public TypeProvider(Map<String, TSDataType> typeMap, TemplatedInfo templatedInfo
4950
}
5051

5152
public TSDataType getType(String symbol) {
52-
return typeMap.get(symbol);
53+
TSDataType type = typeMap.get(symbol);
54+
if (templatedInfo == null || type != null) {
55+
return type;
56+
}
57+
IMeasurementSchema schema = templatedInfo.getSchemaMap().get(symbol);
58+
return schema == null ? null : schema.getType();
5359
}
5460

5561
public void setType(String symbol, TSDataType dataType) {

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -683,18 +683,14 @@ public Operator visitAlignedSeriesAggregationScan(
683683
AlignedSeriesAggregationScanNode node, LocalExecutionPlanContext context) {
684684
if (context.isBuildPlanUseTemplate()) {
685685
Ordering scanOrder = context.getTemplatedInfo().getScanOrder();
686-
List<AggregationDescriptor> aggregationDescriptors;
687-
if (node.getDescriptorType() == 0 || node.getDescriptorType() == 2) {
688-
aggregationDescriptors = context.getTemplatedInfo().getAscendingDescriptorList();
689-
} else {
686+
if (node.getDescriptorType() == 1) {
690687
scanOrder = scanOrder.reverse();
691-
aggregationDescriptors = context.getTemplatedInfo().getDescendingDescriptorList();
692688
}
693689

694690
return constructAlignedSeriesAggregationScanOperator(
695691
node.getPlanNodeId(),
696692
node.getAlignedPath(),
697-
aggregationDescriptors,
693+
node.getAggregationDescriptorList(),
698694
context.getTemplatedInfo().getPushDownPredicate(),
699695
scanOrder,
700696
context.getTemplatedInfo().getGroupByTimeParameter(),

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesAggregationScanNode.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
3434
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.AggregationNode;
3535
import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationDescriptor;
36+
import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationStep;
3637
import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
3738
import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
3839

@@ -286,6 +287,7 @@ public void serializeUseTemplate(DataOutputStream stream, TypeProvider typeProvi
286287
ReadWriteIOUtils.write(node, stream);
287288
}
288289
ReadWriteIOUtils.write(descriptorType, stream);
290+
aggregationDescriptorList.get(0).getStep().serialize(stream);
289291
}
290292

291293
public static AlignedSeriesAggregationScanNode deserializeUseTemplate(
@@ -306,7 +308,11 @@ public static AlignedSeriesAggregationScanNode deserializeUseTemplate(
306308
aggregationDescriptorList = typeProvider.getTemplatedInfo().getAscendingDescriptorList();
307309
} else if (descriptorType == 1) {
308310
aggregationDescriptorList = typeProvider.getTemplatedInfo().getDescendingDescriptorList();
311+
} else {
312+
throw new IllegalStateException("Unexpected descriptorType: " + descriptorType);
309313
}
314+
AggregationStep step = AggregationStep.deserialize(byteBuffer);
315+
aggregationDescriptorList.forEach(aggregationDescriptor -> aggregationDescriptor.setStep(step));
310316

311317
return new AlignedSeriesAggregationScanNode(
312318
planNodeId,

0 commit comments

Comments
 (0)