void verifyArguments(Step step) {
      int expectedArgumentCount;
      if (step == Step.SINGLE || step == Step.PARTIAL) {
        expectedArgumentCount = resolvedFunction.getSignature().getArgumentTypes().size();
      } else {
        // Intermediate and final steps get the intermediate value and the lambda functions
        expectedArgumentCount =
            1
                + (int)
                    resolvedFunction.getSignature().getArgumentTypes().stream()
                        .filter(FunctionType.class::isInstance)
                        .count();
      }

      checkArgument(
          expectedArgumentCount == arguments.size(),
          "%s aggregation function %s has %s arguments, but %s arguments were provided to function call",
          step,
          resolvedFunction.getSignature(),
          expectedArgumentCount,
          arguments.size());
    }
@return whether this node should produce default output in case of no input pages. For example
    for query:
    <p>SELECT count(*) FROM nation WHERE nationkey < 0
    <p>A default output of "0" is expected to be produced by FINAL aggregation operator.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/AggregationNode.java