Uploaded image for project: 'Hive'
  1. Hive
  2. HIVE-25919

ClassCastException when pushing boolean column predicate in HBaseStorageHandler

    XMLWordPrintableJSON

Details

    Description

      The following queries fail with a ClassCastException when the optimizer tries to push the predicates in the underlying HBase table.

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

      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.

      Attachments

        1. test.q
          0.2 kB
          Naresh P R

        Issue Links

          Activity

            People

              zabetak Stamatis Zampetakis
              nareshpr Naresh P R
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 50m
                  50m