[
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)