You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@drill.apache.org by "Jinfeng Ni (JIRA)" <ji...@apache.org> on 2014/05/11 00:10:34 UTC
[jira] [Created] (DRILL-665) Drill throw NPE or
UnsupportedOperationException when case expression contains null value
Jinfeng Ni created DRILL-665:
--------------------------------
Summary: Drill throw NPE or UnsupportedOperationException when case expression contains null value
Key: DRILL-665
URL: https://issues.apache.org/jira/browse/DRILL-665
Project: Apache Drill
Issue Type: Bug
Reporter: Jinfeng Ni
Assignee: Timothy Chen
Hi Tim,
Per discussion yesterday, we found Drill will throw NPE or UnsupportedOperationException when case expression contains null value. (null value is added for the optional 'else' branch).
Q1:
select case when n_nationkey < 100 then 100 end from cp.`tpch/nation.parquet`;
java.lang.NullPointerException
org.apache.drill.exec.planner.logical.DrillOptiq$RexToDrill.visitLiteral(DrillOptiq.java:330) ~[drill-java-exec-1.0.0-m2-incubating-SNAPSHOT-rebuffed.jar:1.0.0-m2-incubating-SNAPSHOT]
......
Q2.
select case when n_nationkey < 100 then n_name end from cp.`tpch/nation.parquet`;
java.lang.UnsupportedOperationException: Unable to convert the value of null and type NULL to a Drill constant expression.
org.apache.drill.exec.planner.logical.DrillOptiq$RexToDrill.visitLiteral(DrillOptiq.java:367) ~[drill-java-exec-1.0.0-m2-incubating-SNAPSHOT-rebuffed.jar:1.0.0-m2-incubating-SNAPSHOT]
......
Our conclusion is Drill need create proper TypedNullConstant in DrillOptiq when the null value is associated with regular SQL type, or resolve to proper SQL typed null constant, in IExpressionTreeMaterializer.visitIfExpression. ( case/if expression requires all the branches return the type of value).
--
This message was sent by Atlassian JIRA
(v6.2#6252)