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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to