[
https://issues.apache.org/jira/browse/HIVE-12941?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15132450#comment-15132450
]
Yongzhi Chen commented on HIVE-12941:
-------------------------------------
>From the behavior of primitive types, null value is lowest priority in getting
>the min and max values: trying to get the min and max value from non-null
>values first, only return null when all the values are null. The algorithm
>treat null value as if largest value for function min and smallest value for
>max.
But the original min code does not apply the rule recursively for other complex
types for example struct. It can handle null struct, but not struct with null
fields {null}. max function works because ,by default, null is treated as
minimum value for compare function. Attach the patch apply the rule for
function min too.
> Unexpected result when using MIN() on struct with NULL in first field
> ---------------------------------------------------------------------
>
> Key: HIVE-12941
> URL: https://issues.apache.org/jira/browse/HIVE-12941
> Project: Hive
> Issue Type: Bug
> Components: Hive
> Affects Versions: 1.1.0
> Reporter: Jan-Erik Hedbom
> Assignee: Yongzhi Chen
> Attachments: HIVE-12941.1.patch
>
>
> Using MIN() on struct with NULL in first field of a row yields NULL as result.
> Example:
> select min(a) FROM (select 1 as a union all select 2 as a union all select
> cast(null as int) as a) tmp;
> OK
> _c0
> 1
> As expected. But if we wrap it in a struct:
> select min(a) FROM (select named_struct("field",1) as a union all select
> named_struct("field",2) as a union all select named_struct("field",cast(null
> as int)) as a) tmp;
> OK
> _c0
> NULL
> Using MAX() works as expected for structs.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)