You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "benj (Jira)" <ji...@apache.org> on 2020/01/10 13:54:00 UTC

[jira] [Updated] (DRILL-7519) Error on case when different branche are array of same type but build differenlty

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

benj updated DRILL-7519:
------------------------
    Attachment: full_log_DRILL7519.log

> Error on case when different branche are array of same type but build differenlty
> ---------------------------------------------------------------------------------
>
>                 Key: DRILL-7519
>                 URL: https://issues.apache.org/jira/browse/DRILL-7519
>             Project: Apache Drill
>          Issue Type: Bug
>    Affects Versions: 1.17.0
>            Reporter: benj
>            Priority: Major
>         Attachments: full_log_DRILL7519.log
>
>
> With 3 array build like
> {code:sql}
> SELECT T.s, typeof(T.s), modeof(T.s)
>       ,T.j, typeof(T.j), modeof(T.j)
>       ,T.j2.a, typeof(T.j2.a), modeof(T.j2.a)
> FROM (
>  SELECT split('a,b',',') as s
>  , convert_fromJSON('["c","d"]') AS j
>  , convert_fromJSON('{"tag":["e","f"]}') AS j2
> ) AS T
> +-----------+---------+--------+-----------+---------+--------+-----------+---------+--------+
> |     s     | EXPR$1  | EXPR$2 |     j     | EXPR$4  | EXPR$5 |  EXPR$6   | EXPR$7  | EXPR$8 |
> +-----------+---------+--------+-----------+---------+--------+-----------+---------+--------+
> | ["a","b"] | VARCHAR | ARRAY  | ["c","d"] | VARCHAR | ARRAY  | ["e","f"] | VARCHAR | ARRAY  |
> +-----------+---------+--------+-----------+---------+--------+-----------+---------+--------+
> {code}
> it's possible to use *s* and *j* in the branch of the same case, but it's not possible to use *s or j* in accordance with *j2.tag*
> {code:sql}
> SELECT CASE WHEN true THEN T.s ELSE T.j END
>      , CASE WHEN false THEN T.s ELSE T.j END
> FROM (
>  SELECT split('a,b',',') AS s
>       , convert_fromJSON('["c","d"]') AS j
>       , convert_fromJSON('{"tag":["e","f"]}') AS j2
> ) AS T
> +-----------+-----------+
> |  EXPR$0   |  EXPR$1   |
> +-----------+-----------+
> | ["a","b"] | ["c","d"] |
> +-----------+-----------+
> SELECT CASE WHEN true THEN T.j2.tag ELSE T.s /*idem with T.j*/ END
>      , CASE WHEN false THEN T.j2.tag ELSE T.s /*idem with T.j*/ END
>  FROM (SELECT split('a,b',',') AS s, convert_fromJSON('["c","d"]') AS j, convert_fromJSON('{"tag":["e","f"]}') AS j2) AS T;
> +-----------+-----------+
> |  EXPR$0   |  EXPR$1   |
> +-----------+-----------+
> | ["e","f"] | ["a","b"] |
> +-----------+-----------+
> /* But surprisingly */
> SELECT CASE WHEN false THEN T.j2.tag ELSE T.s /*idem with T.j*/ END
> FROM (SELECT split('a,b',',') AS s, convert_fromJSON('["c","d"]') AS j, convert_fromJSON('{"tag":["e","f"]}') AS j2) AS T;
> Error: SYSTEM ERROR: NullPointerException
> /* and */
> SELECT CASE WHEN true THEN T.j2.tag ELSE T.s /*idem with T.j*/ END
> FROM (SELECT split('a,b',',') AS s, convert_fromJSON('["c","d"]') AS j, convert_fromJSON('{"tag":["e","f"]}') AS j2) AS T;
> +-----------+
> |  EXPR$0   |
> +-----------+
> | ["e","f"] |
> +-----------+
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)