private IdentitySinkNode initIdentitySinkNode(TypeProvider typeProvider)
      throws IllegalPathException {
    FullOuterTimeJoinNode fullOuterTimeJoinNode1 = initFullOuterTimeJoinNode(typeProvider, 3);
    FullOuterTimeJoinNode fullOuterTimeJoinNode2 = initFullOuterTimeJoinNode(typeProvider, 3);
    FullOuterTimeJoinNode fullOuterTimeJoinNode3 = initFullOuterTimeJoinNode(typeProvider, 3);
    fullOuterTimeJoinNode1.setPlanNodeId(new PlanNodeId("FullOuterTimeJoinNode1"));
    fullOuterTimeJoinNode2.setPlanNodeId(new PlanNodeId("FullOuterTimeJoinNode2"));
    fullOuterTimeJoinNode3.setPlanNodeId(new PlanNodeId("FullOuterTimeJoinNode3"));

    IdentitySinkNode identitySinkNode = new IdentitySinkNode(new PlanNodeId("IdentitySinkNode"));
    identitySinkNode.addChild(fullOuterTimeJoinNode1);
    identitySinkNode.addChild(fullOuterTimeJoinNode2);
    identitySinkNode.addChild(fullOuterTimeJoinNode3);
    return identitySinkNode;
  }
This method will init a DeviceViewNode with @childNum alignedSeriesScanNode as children.

@param childNum the number of children
@return a DeviceViewNode with @childNum alignedSeriesScanNode as children
iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/PipelineBuilderTest.java