[ 
https://issues.apache.org/jira/browse/HIVE-15328?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pengcheng Xiong updated HIVE-15328:
-----------------------------------
    Target Version/s: 3.0.0  (was: 2.2.0)

> Inconsistent/incorrect handling of NULL in nested structs
> ---------------------------------------------------------
>
>                 Key: HIVE-15328
>                 URL: https://issues.apache.org/jira/browse/HIVE-15328
>             Project: Hive
>          Issue Type: Bug
>          Components: Hive
>    Affects Versions: 2.1.0
>            Reporter: David Maughan
>
> h2. Overview
> Performing {{IS NULL}} checks against a null struct that is generated as part 
> of a UDF correctly returns {{true}}. However, the same check against the same 
> null struct that has been persisted to a table incorrectly returns {{false}}. 
> Additionally, when a child field of the null struct is inspected in the same 
> query, the result of the null check on the struct itself reverses itself to 
> {{true}}.
> The issue does not appear to be dependent on the storage format of the table 
> as the same result is repeated with TEXTFILE, PARQUET, ORC and AVRO.
> h2. Example
> In this example I have used {{if(1=1, null, named_struct('c', 1))}} as a 
> crude method of generating a simple null struct.
> h4. 'b' is correctly reported as {{true}}.
> {code}
> hive> select
>     >   b is null,
>     >   b
>     > from (
>     >   select
>     >     if(1=1, null, named_struct('c', 1)) as b
>     >   ) as a;
> OK
> true  NULL
> {code}
> h4. 'b' is correctly reported as {{true}} when also inspecting 'b.c'.
> {code}
> hive>
>     > select
>     >   b is null,
>     >   b.c is null,
>     >   b
>     > from (
>     >   select
>     >     if(1=1, null, named_struct('c', 1)) as b
>     >   ) as a;
> OK
> true  true    NULL
> {code}
> h4. Persist the data to a table
> {code}
> hive>
>     > create table a
>     >   as
>     > select
>     >   if(1=1, null, named_struct('c', 1)) as b;
> OK
> {code}
> h4. 'b' is incorrectly reported as {{false}}.
> {code}
> hive>
>     > select
>     >   b is null,
>     >   b
>     > from a;
> OK
> false NULL
> {code}
> h4. 'b' is now correctly reported as {{true}} when also inspecting 'b.c'.
> {code}
> hive>
>     > select
>     >   b is null,
>     >   b.c is null,
>     >   b
>     > from a;
> OK
> true  true    NULL
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to