[ 
https://issues.apache.org/jira/browse/FLINK-5795?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15869286#comment-15869286
 ] 

ASF GitHub Bot commented on FLINK-5795:
---------------------------------------

Github user wuchong commented on a diff in the pull request:

    https://github.com/apache/flink/pull/3330#discussion_r101450405
  
    --- Diff: 
flink-libraries/flink-table/src/main/scala/org/apache/flink/table/codegen/CodeGenerator.scala
 ---
    @@ -1463,21 +1465,23 @@ class CodeGenerator(
         */
       def addReusableFunction(function: UserDefinedFunction): String = {
         val classQualifier = function.getClass.getCanonicalName
    -    val fieldTerm = s"function_${classQualifier.replace('.', '$')}"
    +    val functionSerializedData = serialize(function)
    +    val fieldTerm =
    +      s"""
    +         |function_${classQualifier.replace('.', 
'$')}_${DigestUtils.md5Hex(functionSerializedData)}
    --- End diff --
    
    It seems that if we register two identical function (not the same 
reference), the field term will the same, which will compile error here. Such 
as:
    
    ```
    val func1 = new MyFunction
    val func2 = new MyFunction
    env.register("func1", func1)
    env.register("func2", func2)
    ```
    
    The func1 and func2 is two different object but the serialized bytes are 
equals.  
    
    BTW, I will suggest to include this case into your new IT cases. 


> Improve “UDTF" to support constructor with parameter.
> -----------------------------------------------------
>
>                 Key: FLINK-5795
>                 URL: https://issues.apache.org/jira/browse/FLINK-5795
>             Project: Flink
>          Issue Type: Sub-task
>          Components: Table API & SQL
>            Reporter: sunjincheng
>            Assignee: sunjincheng
>




--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to