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

Reply via email to