@Override
        public RexNode visit(CallExpression callExpression) {
            final List<ResolvedExpression> newChildren = callExpression.getChildren().stream().map(expr -> {
                RexNode convertedNode = expr.accept(this);
                return new RexNodeExpression(convertedNode, ((ResolvedExpression) expr).getOutputDataType());
            }).collect(Collectors.toList());

            CallExpression newCall;
            if (callExpression.getFunctionIdentifier().isPresent()) {
                newCall = new CallExpression(
                        callExpression.getFunctionIdentifier().get(), callExpression.getFunctionDefinition(), newChildren,
                        callExpression.getOutputDataType());
            } else {
                newCall = new CallExpression(
                        callExpression.getFunctionDefinition(), newChildren, callExpression.getOutputDataType());
            }
            return convertExprToRexNode(newCall);
        }
Get the {@link AggCall} correspond to the aggregate or table aggregate expression.
core/src/main/java/org/apache/flink/table/planner/plan/QueryOperationConverter.java