You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Stamatis Zampetakis (Jira)" <ji...@apache.org> on 2022/02/03 17:30:00 UTC

[jira] [Commented] (HIVE-25919) ClassCastException when pushing boolean column predicate in HBaseStorageHandler

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

Stamatis Zampetakis commented on HIVE-25919:
--------------------------------------------

I uploaded a quick fix to avoid the class cast exception by skipping the predicate pushdown. The predicate pushdown for simple boolean columns never worked so I suggest to handle this in another JIRA. What do you think [~abstractdog]?

> ClassCastException when pushing boolean column predicate in HBaseStorageHandler
> -------------------------------------------------------------------------------
>
>                 Key: HIVE-25919
>                 URL: https://issues.apache.org/jira/browse/HIVE-25919
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Naresh P R
>            Assignee: Stamatis Zampetakis
>            Priority: Major
>              Labels: pull-request-available
>         Attachments: test.q
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> The following queries fail with a {{ClassCastException}} when the optimizer tries to push the predicates in the underlying HBase table.
> {code:sql}
> CREATE TABLE hbase_table(row_key string, c1 boolean, c2 boolean)
> STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
> WITH SERDEPROPERTIES (
> "hbase.columns.mapping" = ":key,cf:c1,cf:c2"
> );
> -- Q1
> select * from hbase_table where c1 and c2;
> -- Q2
> select * from hbase_table where c1=true and c2=true;
> {code}
> {code:java}
> ClassCastException org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc cannot be cast to org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc
> java.lang.ClassCastException: org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc cannot be cast to org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc
>         at org.apache.hadoop.hive.ql.index.IndexPredicateAnalyzer$1.process(IndexPredicateAnalyzer.java:163)
>         at org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:90)
>         at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:105)
>         at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatch(DefaultGraphWalker.java:89)
>         at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.walk(DefaultGraphWalker.java:178)
>         at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.startWalking(DefaultGraphWalker.java:120)
>         at org.apache.hadoop.hive.ql.index.IndexPredicateAnalyzer.analyzePredicate(IndexPredicateAnalyzer.java:174)
>         at org.apache.hadoop.hive.hbase.HBaseStorageHandler.decomposePredicate(HBaseStorageHandler.java:415) 
> {code}
> mvn test -Dtest=TestHBaseCliDriver -Dqfile=test.q -Dtest.output.overwrite -DskipSparkTests -pl itests/qtest -Pitests
> The failure in Q2 is probably related to HIVE-13815 since the expression (c1 = true and c2 = true) is simplified to (c1 and c2) leading to the exception above but the problem was probably there even before as Q1 is failing as well with the same stacktrace.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)