Github user shaoxuan-wang commented on a diff in the pull request:
https://github.com/apache/flink/pull/3809#discussion_r114571910
--- Diff:
flink-libraries/flink-table/src/main/scala/org/apache/flink/table/plan/ProjectionTranslator.scala
---
@@ -327,4 +332,56 @@ object ProjectionTranslator {
}
}
+ /**
+ * Find and replace UDAGG function Call to UDAGGFunctionCall
+ *
+ * @param field the expression to check
+ * @param tableEnv the TableEnvironment
+ * @return an expression with correct UDAGGFunctionCall type for UDAGG
functions
+ */
+ def replaceUDAGGFunctionCall(field: Expression, tableEnv:
TableEnvironment): Expression = {
--- End diff --
We will not have the chance to execute LogicalNode#resolveExpressions
before get aggNames, projectFields, etc. I actually tried another alternative
approach to conduct the replacement in extractAggregationsAndProperties and
replaceAggregationsAndProperties (we have to check and handle the UDAGG call
carefully in both functions), it works but I do not like that design. It makes
the logic of these two methods not completely clean. Also, in over aggregate it
will not call extractAggregationsAndProperties and
replaceAggregationsAndProperties. So I decide to implement a separate function
to handle the UDAGGFunctionCall replacement.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---