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

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

dianfu commented on a change in pull request #7152: [FLINK-10958] [table] Add 
overload support for user defined function
URL: https://github.com/apache/flink/pull/7152#discussion_r235636582
 
 

 ##########
 File path: 
flink-libraries/flink-table/src/main/scala/org/apache/flink/table/functions/utils/UserDefinedFunctionUtils.scala
 ##########
 @@ -719,19 +750,28 @@ object UserDefinedFunctionUtils {
     * Compares parameter candidate classes with expected classes. If true, the 
parameters match.
     * Candidate can be null (acts as a wildcard).
     */
+  private def parameterTypeApplicable(candidate: Class[_], expected: 
Class[_]): Boolean =
+    parameterTypeEquals(candidate, expected) || 
parameterTypeSubClassOf(candidate, expected)
+
 
 Review comment:
   It's all right as `parameterTypeSubClassOf` is only used in 
`parameterTypeApplicable `.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> Add overload support for user defined function 
> -----------------------------------------------
>
>                 Key: FLINK-10958
>                 URL: https://issues.apache.org/jira/browse/FLINK-10958
>             Project: Flink
>          Issue Type: Task
>          Components: Table API & SQL
>            Reporter: Dian Fu
>            Assignee: Dian Fu
>            Priority: Major
>              Labels: pull-request-available
>
> Currently overload is not supported in user defined function and given the 
> following UDF
> {code:java}
> class Func21 extends ScalarFunction {
>   def eval(p: People): String = {
>     p.name
>   }
>   def eval(p: Student): String = {
>     "student#" + p.name
>   }
> }
> class People(val name: String)
> class Student(name: String) extends People(name)
> class GraduatedStudent(name: String) extends Student(name)
> {code}
> Queries such as the following will compile failed with error msg "Found 
> multiple 'eval' methods which match the signature."
>  
> {code:java}
> val udf = new Func21
> val table = ...
> table.select(udf(new GraduatedStudent("test"))) {code}
> That's because overload is not supported in user defined function currently. 
> I think it will make sense to support overload following the java language 
> specification in section 
> [15.2|https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.12].
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to