You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2022/07/04 10:55:02 UTC
[iotdb] branch master updated: Add scanOrder in FillNode
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 ccf895a20e Add scanOrder in FillNode
ccf895a20e is described below
commit ccf895a20e66965739e9ce1a16a5f4f72310a46b
Author: liuminghui233 <36...@users.noreply.github.com>
AuthorDate: Mon Jul 4 18:54:55 2022 +0800
Add scanOrder in FillNode
---
.../db/mpp/plan/planner/LogicalPlanBuilder.java | 6 +++--
.../iotdb/db/mpp/plan/planner/LogicalPlanner.java | 2 +-
.../plan/planner/plan/node/process/FillNode.java | 31 +++++++++++++++-------
.../plan/plan/node/process/FillNodeSerdeTest.java | 3 ++-
4 files changed, 29 insertions(+), 13 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanBuilder.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanBuilder.java
index b90a5d738a..2eb94df12f 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanBuilder.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanBuilder.java
@@ -634,12 +634,14 @@ public class LogicalPlanBuilder {
return this;
}
- public LogicalPlanBuilder planFill(FillDescriptor fillDescriptor) {
+ public LogicalPlanBuilder planFill(FillDescriptor fillDescriptor, OrderBy scanOrder) {
if (fillDescriptor == null) {
return this;
}
- this.root = new FillNode(context.getQueryId().genPlanNodeId(), this.getRoot(), fillDescriptor);
+ this.root =
+ new FillNode(
+ context.getQueryId().genPlanNodeId(), this.getRoot(), fillDescriptor, scanOrder);
return this;
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanner.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanner.java
index 55478b8235..f0b083aa7f 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanner.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanner.java
@@ -170,7 +170,7 @@ public class LogicalPlanner {
planBuilder =
planBuilder
.planFilterNull(analysis.getFilterNullParameter())
- .planFill(analysis.getFillDescriptor())
+ .planFill(analysis.getFillDescriptor(), queryStatement.getResultOrder())
.planOffset(queryStatement.getRowOffset())
.planLimit(queryStatement.getRowLimit());
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/process/FillNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/process/FillNode.java
index c9111d4f25..d5a7fce186 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/process/FillNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/process/FillNode.java
@@ -23,6 +23,8 @@ import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeType;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanVisitor;
import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.FillDescriptor;
+import org.apache.iotdb.db.mpp.plan.statement.component.OrderBy;
+import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import com.google.common.collect.ImmutableList;
@@ -38,19 +40,22 @@ public class FillNode extends ProcessNode {
// descriptions of how null values are filled
private FillDescriptor fillDescriptor;
+ private OrderBy scanOrder;
+
private PlanNode child;
public FillNode(PlanNodeId id) {
super(id);
}
- public FillNode(PlanNodeId id, FillDescriptor fillDescriptor) {
+ public FillNode(PlanNodeId id, FillDescriptor fillDescriptor, OrderBy scanOrder) {
this(id);
this.fillDescriptor = fillDescriptor;
+ this.scanOrder = scanOrder;
}
- public FillNode(PlanNodeId id, PlanNode child, FillDescriptor fillDescriptor) {
- this(id, fillDescriptor);
+ public FillNode(PlanNodeId id, PlanNode child, FillDescriptor fillDescriptor, OrderBy scanOrder) {
+ this(id, fillDescriptor, scanOrder);
this.child = child;
}
@@ -75,7 +80,7 @@ public class FillNode extends ProcessNode {
@Override
public PlanNode clone() {
- return new FillNode(getPlanNodeId(), fillDescriptor);
+ return new FillNode(getPlanNodeId(), fillDescriptor, scanOrder);
}
@Override
@@ -92,18 +97,21 @@ public class FillNode extends ProcessNode {
protected void serializeAttributes(ByteBuffer byteBuffer) {
PlanNodeType.FILL.serialize(byteBuffer);
fillDescriptor.serialize(byteBuffer);
+ ReadWriteIOUtils.write(scanOrder.ordinal(), byteBuffer);
}
@Override
protected void serializeAttributes(DataOutputStream stream) throws IOException {
PlanNodeType.FILL.serialize(stream);
fillDescriptor.serialize(stream);
+ ReadWriteIOUtils.write(scanOrder.ordinal(), stream);
}
public static FillNode deserialize(ByteBuffer byteBuffer) {
FillDescriptor fillDescriptor = FillDescriptor.deserialize(byteBuffer);
+ OrderBy scanOrder = OrderBy.values()[ReadWriteIOUtils.readInt(byteBuffer)];
PlanNodeId planNodeId = PlanNodeId.deserialize(byteBuffer);
- return new FillNode(planNodeId, fillDescriptor);
+ return new FillNode(planNodeId, fillDescriptor, scanOrder);
}
@Override
@@ -117,17 +125,22 @@ public class FillNode extends ProcessNode {
if (!super.equals(o)) {
return false;
}
- FillNode fillNode = (FillNode) o;
- return Objects.equals(fillDescriptor, fillNode.fillDescriptor)
- && Objects.equals(child, fillNode.child);
+ FillNode that = (FillNode) o;
+ return Objects.equals(fillDescriptor, that.fillDescriptor)
+ && Objects.equals(child, that.child)
+ && scanOrder == that.scanOrder;
}
@Override
public int hashCode() {
- return Objects.hash(super.hashCode(), fillDescriptor, child);
+ return Objects.hash(super.hashCode(), fillDescriptor, child, scanOrder);
}
public FillDescriptor getFillDescriptor() {
return fillDescriptor;
}
+
+ public OrderBy getScanOrder() {
+ return scanOrder;
+ }
}
diff --git a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/node/process/FillNodeSerdeTest.java b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/node/process/FillNodeSerdeTest.java
index 84f7605d88..4c984e0dd1 100644
--- a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/node/process/FillNodeSerdeTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/node/process/FillNodeSerdeTest.java
@@ -44,7 +44,8 @@ public class FillNodeSerdeTest {
new FillNode(
new PlanNodeId("TestFillNode"),
timeJoinNode,
- new FillDescriptor(FillPolicy.VALUE, new LongLiteral("100")));
+ new FillDescriptor(FillPolicy.VALUE, new LongLiteral("100")),
+ OrderBy.TIMESTAMP_ASC);
ByteBuffer byteBuffer = ByteBuffer.allocate(1024);
fillNode.serialize(byteBuffer);