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

Jark Wu commented on FLINK-20739:
---------------------------------

I think this is not a problem only lies in Hive module, if users have a 
user-defined-function, they may also have the similar need to lazy evaluate 
parameters.

Therefore, I think a complete solution would be support lazy-evaluation and 
short-circuiting in Flink UDF, then we can easily bridge Hive's 
{{DeferredObject}}.

> 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