private List<PlanNode> processRegionScan(RegionScanNode node, DistributionPlanContext context) {
    List<PlanNode> planNodeList = splitRegionScanNodeByRegion(node, context);
    if (planNodeList.size() == 1) {
      return planNodeList;
    }

    boolean outputCountInScanNode = node.isOutputCount() && !context.isOneSeriesInMultiRegion();
    ActiveRegionScanMergeNode regionMergeNode =
        new ActiveRegionScanMergeNode(
            context.queryContext.getQueryId().genPlanNodeId(),
            node.isOutputCount(),
            !outputCountInScanNode,
            node.getSize());
    for (PlanNode planNode : planNodeList) {
      ((RegionScanNode) planNode).setOutputCount(outputCountInScanNode);
      regionMergeNode.addChild(planNode);
    }
    return Collections.singletonList(regionMergeNode);
  }
aggregation align by device, and aggregation is `count_if` or `diff`, or aggregation used with
group by parameter (session, variation, count), use the old aggregation logic
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/SourceRewriter.java