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

[jira] [Updated] (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:all-tabpanel ]

David Lavati updated HIVE-20879:
--------------------------------
    Attachment: HIVE-20879.patch
        Status: Patch Available  (was: Open)

My proposed solution for this is to add a check inside ExprNodeGenericFuncDesc.newInstance for GenericUDFOPOr and GenericUDFOPAnd:

If the given ObjectInspector would be a Void Type, create a Constant Boolean one instead w/ a null value.

> 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.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)