Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -103,10 +103,12 @@ public void orderByDeviceTest1() {
assertTrue(firstFiRoot.getChildren().get(0) instanceof LimitNode);
mergeSortNode = ((LimitNode) firstFiRoot.getChildren().get(0)).getChild();
assertTrue(mergeSortNode instanceof MergeSortNode);
assertTrue(mergeSortNode.getChildren().get(0) instanceof DeviceViewNode);
assertTrue(
mergeSortNode.getChildren().get(0).getChildren().get(0) instanceof FullOuterTimeJoinNode);

"MergeSort subtree should contain at least one DeviceViewNode",
containsNodeType(mergeSortNode, DeviceViewNode.class));
assertTrue(
"DeviceViewNode subtree should contain a FullOuterTimeJoinNode",
containsNodeType(mergeSortNode, FullOuterTimeJoinNode.class));
// order by device, time
sql =
"select * from root.sg.d1, root.sg.d22 order by device asc, time desc LIMIT 10 align by device";
Expand All @@ -120,9 +122,12 @@ public void orderByDeviceTest1() {
assertTrue(firstFiRoot.getChildren().get(0) instanceof LimitNode);
mergeSortNode = ((LimitNode) firstFiRoot.getChildren().get(0)).getChild();
assertTrue(mergeSortNode instanceof MergeSortNode);
assertTrue(mergeSortNode.getChildren().get(0) instanceof DeviceViewNode);
assertTrue(
mergeSortNode.getChildren().get(0).getChildren().get(0) instanceof FullOuterTimeJoinNode);
"MergeSort subtree should contain at least one DeviceViewNode",
containsNodeType(mergeSortNode, DeviceViewNode.class));
assertTrue(
"DeviceViewNode subtree should contain a FullOuterTimeJoinNode",
containsNodeType(mergeSortNode, FullOuterTimeJoinNode.class));
assertScanNodeLimitValue(
plan.getInstances().get(0).getFragment().getPlanNodeTree(), LIMIT_VALUE);
assertScanNodeLimitValue(
Expand Down Expand Up @@ -172,8 +177,12 @@ public void orderByDeviceTest2() {
assertTrue(firstFiRoot.getChildren().get(0) instanceof LimitNode);
mergeSortNode = ((LimitNode) firstFiRoot.getChildren().get(0)).getChild();
assertTrue(mergeSortNode instanceof MergeSortNode);
assertTrue(mergeSortNode.getChildren().get(0) instanceof DeviceViewNode);
assertTrue(mergeSortNode.getChildren().get(0).getChildren().get(0) instanceof SortNode);
assertTrue(
"MergeSort subtree should contain at least one DeviceViewNode",
containsNodeType(mergeSortNode, DeviceViewNode.class));
assertTrue(
"There should be a SortNode somewhere under the MergeSort subtree",
containsNodeType(mergeSortNode, SortNode.class));
assertScanNodeLimitValue(
plan.getInstances().get(0).getFragment().getPlanNodeTree(), LIMIT_VALUE);
assertScanNodeLimitValue(
Expand Down Expand Up @@ -224,11 +233,10 @@ public void orderByDeviceTest3() {
assertTrue(firstFiRoot.getChildren().get(0) instanceof LimitNode);
PlanNode transformNode = ((LimitNode) firstFiRoot.getChildren().get(0)).getChild();
assertTrue(transformNode instanceof TransformNode);
assertTrue(transformNode.getChildren().get(0) instanceof MergeSortNode);
assertTrue(transformNode.getChildren().get(0).getChildren().get(0) instanceof DeviceViewNode);
assertTrue(
transformNode.getChildren().get(0).getChildren().get(0).getChildren().get(0)
instanceof SortNode);
PlanNode mergeSortNode = transformNode.getChildren().get(0);
assertTrue(mergeSortNode instanceof MergeSortNode);
assertTrue(containsNodeType(mergeSortNode, DeviceViewNode.class));
assertTrue(containsNodeType(mergeSortNode, SortNode.class));
}

/*
Expand Down Expand Up @@ -273,16 +281,17 @@ public void orderByDeviceTest4() {
assertTrue(firstFiRoot.getChildren().get(0) instanceof LimitNode);
PlanNode filterNode = ((LimitNode) firstFiRoot.getChildren().get(0)).getChild();
assertTrue(filterNode instanceof FilterNode);
assertTrue(filterNode.getChildren().get(0) instanceof AggregationMergeSortNode);
assertTrue(filterNode.getChildren().get(0).getChildren().get(0) instanceof DeviceViewNode);
PlanNode aggMergeNode = filterNode.getChildren().get(0);
assertTrue(aggMergeNode instanceof AggregationMergeSortNode);
assertTrue(
filterNode.getChildren().get(0).getChildren().get(0).getChildren().get(0)
instanceof RawDataAggregationNode);
containsNodeType(aggMergeNode, DeviceViewNode.class)
|| containsNodeType(aggMergeNode, SingleDeviceViewNode.class));
assertTrue(containsNodeType(aggMergeNode, RawDataAggregationNode.class));
PlanNode thirdFiRoot = plan.getInstances().get(2).getFragment().getPlanNodeTree();
assertTrue(thirdFiRoot instanceof IdentitySinkNode);
assertTrue(thirdFiRoot.getChildren().get(0) instanceof DeviceViewNode);
assertTrue(
thirdFiRoot.getChildren().get(0).getChildren().get(0) instanceof RawDataAggregationNode);
PlanNode deviceRoot = thirdFiRoot.getChildren().get(0);
assertTrue(deviceRoot instanceof DeviceViewNode || deviceRoot instanceof SingleDeviceViewNode);
assertTrue(containsNodeType(deviceRoot, RawDataAggregationNode.class));
}

/*
Expand Down Expand Up @@ -1121,4 +1130,16 @@ private void assertScanNodeLimitValue(PlanNode root, long limitValue) {
}
}
}

private static boolean containsNodeType(PlanNode root, Class<?> clazz) {
if (clazz.isInstance(root)) {
return true;
}
for (PlanNode child : root.getChildren()) {
if (containsNodeType(child, clazz)) {
return true;
}
}
return false;
}
}