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/08 14:44:00 UTC
[jira] [Created] (DRILL-7519) Error on case when different branche
are array of same type but build differenlty
benj created DRILL-7519:
---------------------------
Summary: 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
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)