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

Jing Zhang edited comment on FLINK-30452 at 12/27/22 7:09 AM:
--------------------------------------------------------------

Fixed in master: 207975b416c324c634f0620e049669afea8cb8db


was (Author: qingru zhang):
Fix in master: 207975b416c324c634f0620e049669afea8cb8db

> Wrong argument type of null literal is used when call Hive's function
> ---------------------------------------------------------------------
>
>                 Key: FLINK-30452
>                 URL: https://issues.apache.org/jira/browse/FLINK-30452
>             Project: Flink
>          Issue Type: Sub-task
>          Components: Connectors / Hive
>            Reporter: luoyuxia
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.17.0
>
>
> While calling Hive function, if the argument is void type, it will be 
> [considered as string 
> type|[https://github.com/apache/flink/blob/2e5cac1f31aa571276df20e24889994672692a89/flink-connectors/flink-connector-hive/src/main/java/org/apache/flink/table/functions/hive/conversion/HiveInspectors.java#L553]]
>  , which may bring wrong type inference and thus may well cause other 
> problems.
>  
> For example, 
> {code:java}
> timestamp(if(a = 0, null, a))
> {code}
> the argument for function `if` is `null` and `a`, null is void type,  `a` is 
> bigint type represents a timestamp, so the inferred return type should be 
> bigint for the `if` function will ignore void type and just consider the 
> other argument type.  But we consider the void type as string type, the 
> return type inferred will be string according to the `if` function inference 
> logic.
> And then when we try to converted the value returned by `if(a = 0, null, a)` 
> to timestamp, the unexpected behavior will happen:
> Since we infer the returned value of `if(a = 0, null, a)`  as string,  so  
> `if(a = 0, null, a)` will return some thing like "1671058803926",but 
> cast ("1671058803926" as timestamp) will return null.
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to