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

xingtanzjr pushed a commit to branch xingtanzjr/mpp-query-basis
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit b06892c1b901cbbf2a3859f13961463ef42c41b1
Author: Jinrui.Zhang <[email protected]>
AuthorDate: Thu Mar 10 22:39:27 2022 +0800

    add RowBasedSeriesAggregateNode
---
 .../plan/process/RowBasedSeriesAggregateNode.java  | 37 ++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git 
a/cluster/src/main/java/org/apache/iotdb/cluster/query/distribution/plan/process/RowBasedSeriesAggregateNode.java
 
b/cluster/src/main/java/org/apache/iotdb/cluster/query/distribution/plan/process/RowBasedSeriesAggregateNode.java
new file mode 100644
index 0000000..5ed718e
--- /dev/null
+++ 
b/cluster/src/main/java/org/apache/iotdb/cluster/query/distribution/plan/process/RowBasedSeriesAggregateNode.java
@@ -0,0 +1,37 @@
+package org.apache.iotdb.cluster.query.distribution.plan.process;
+
+import org.apache.iotdb.cluster.query.distribution.common.GroupByTimeParameter;
+import org.apache.iotdb.cluster.query.distribution.plan.PlanNodeId;
+import org.apache.iotdb.db.query.expression.unary.FunctionExpression;
+
+import java.util.List;
+
+/**
+ * This node is used to aggregate required series by raw data.
+ * The raw data will be input as a TsBlock. This node will output the series 
aggregated result represented by TsBlock
+ * Thus, the columns in output TsBlock will be different from input TsBlock.
+ */
+public class RowBasedSeriesAggregateNode extends ProcessNode {
+    // The parameter of `group by time`
+    // Its value will be null if there is no `group by time` clause,
+    private GroupByTimeParameter groupByTimeParameter;
+
+    // The list of aggregation functions, each FunctionExpression will be 
output as one column of result TsBlock
+    // (Currently we only support one series in the aggregation function)
+    // TODO: need consider whether it is suitable the aggregation function 
using FunctionExpression
+    private List<FunctionExpression> aggregateFuncList;
+
+    public RowBasedSeriesAggregateNode(PlanNodeId id) {
+        super(id);
+    }
+
+    public RowBasedSeriesAggregateNode(PlanNodeId id, List<FunctionExpression> 
aggregateFuncList) {
+        this(id);
+        this.aggregateFuncList = aggregateFuncList;
+    }
+
+    public RowBasedSeriesAggregateNode(PlanNodeId id, List<FunctionExpression> 
aggregateFuncList, GroupByTimeParameter groupByTimeParameter) {
+        this(id, aggregateFuncList);
+        this.groupByTimeParameter = groupByTimeParameter;
+    }
+}

Reply via email to