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

Rui Li commented on FLINK-20739:
--------------------------------

I agree it's a valid issue that the IF function doesn't support short circuit 
evaluation. But on the other hand, it may be desirable to use the hive function 
in some cases, e.g. some users rely on hive's implicit type conversion. So I'm 
not sure whether we should simply ban it, or whether we can implement lazy 
evaluation for UDFs in flink.

If you don't intend to override flink functions with hive module, then a 
workaround is to put hive module after the core module, so the flink functions 
take precedence over hive's.

> Ban  `if`  from HiveModule
> --------------------------
>
>                 Key: FLINK-20739
>                 URL: https://issues.apache.org/jira/browse/FLINK-20739
>             Project: Flink
>          Issue Type: Improvement
>          Components: Connectors / Hive
>    Affects Versions: 1.10.0
>            Reporter: jinfeng
>            Priority: Major
>
> When using hiveModule, the if function is treated as a normal function.
>  If I have a SQL like this: 
>   
> {code:java}
>  insert into Sink select  if(size(split(`test`, '-')) > 1, split(`test`, 
> '-')[2], 'error') from Source   {code}
>  
>  It will throw arrayIndexOutOfBoundsException in Flink1.10,  becase 
> size(split(`test`, '-')-) > 1 , split(`test`, '')[2], ‘error’   will be 
> calculated first, and then if function will be  calculated



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to