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