You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Zoltan Haindrich (JIRA)" <ji...@apache.org> on 2019/01/09 09:52:00 UTC

[jira] [Commented] (HIVE-20879) Using null in a projection expression leads to CastException

    [ https://issues.apache.org/jira/browse/HIVE-20879?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16738030#comment-16738030 ] 

Zoltan Haindrich commented on HIVE-20879:
-----------------------------------------

I think the approach is right, but I think it could moved to TypeCheckProcFactory - and keep AND/OR related type logic outside of the "Desc"
https://github.com/apache/hive/blob/e92df8dd6aae2dffa24cabbfce343704a7fe9a04/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java#L1240



> Using null in a projection expression leads to CastException
> ------------------------------------------------------------
>
>                 Key: HIVE-20879
>                 URL: https://issues.apache.org/jira/browse/HIVE-20879
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Zoltan Haindrich
>            Assignee: David Lavati
>            Priority: Major
>         Attachments: HIVE-20879.2.patch, HIVE-20879.patch
>
>
> repro:
> {code}
> create table cx1(bool0 boolean);
> select NULL or bool0 from cx1;
> {code}
> workaround(correct type of null):
> {code}
> select cast(NULL as boolean) or bool0 from cx1;
> {code}
> exception:
> {code}
> 2018-11-07T07:28:39,628 ERROR [3533166f-7174-45cd-9d9e-d487038cb6e0 main] ql.Driver: FAILED: ClassCastEx
> ception org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableVoidObjectInspector cannot be ca
> st to org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector
> java.lang.ClassCastException: org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableVoidObject
> Inspector cannot be cast to org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspect
> or
>         at org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPAnd.initialize(GenericUDFOPAnd.java:56)
>         at org.apache.hadoop.hive.ql.udf.generic.GenericUDF.initializeAndFoldConstants(GenericUDF.java:1
> 48)
>         at org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc.newInstance(ExprNodeGenericFuncDesc.ja
> va:260)
>         at org.apache.hadoop.hive.ql.parse.TypeCheckProcFactory$DefaultExprProcessor.getXpathOrFuncExprN
> odeDesc(TypeCheckProcFactory.java:1251)
>         at org.apache.hadoop.hive.ql.parse.TypeCheckProcFactory$DefaultExprProcessor.process(TypeCheckPr
> ocFactory.java:1660)
>         at org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:90)
>         at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:10
> 5)
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)