[ 
https://issues.apache.org/jira/browse/HIVE-25919?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Stamatis Zampetakis updated HIVE-25919:
---------------------------------------
    Description: 
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.


  was:
After HIVE-13815, 
[this|https://github.com/apache/calcite/blob/branch-1.10/core/src/main/java/org/apache/calcite/rex/RexUtil.java#L1797-L1810]
 change is removing (EQUALS true) from predicate expression.

AND Condition with boolean=true is throwing CCE at here because of above change.
[https://github.com/apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/index/IndexPredicateAnalyzer.java#L163]
{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}
Attached repro q file

mvn test -Dtest=TestHBaseCliDriver -Dqfile=test.q -Dtest.output.overwrite 
-DskipSparkTests -pl itests/qtest -Pitests


> 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
>         Attachments: test.q
>
>
> 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)

Reply via email to