Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-27972

Scan result wrong when using filterlist and specifing scan colums

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 2.4.14
    • None
    • Filters
    • None

    Description

      When I run these tests in hbase shell.

      like this:

      select cq1 from t1 where cq1<='2' and cq2>='5'

      select cq1 from t1 where cq1<='2' or cq2>='5'

      all these results is  is different from expectations...the results is different with MySQL and others DB...

      // Test
      create 't1',{NAME=>'cf1'}
      put 't1','r1','cf1:cq1','1'
      put 't1','r1','cf1:cq2','2'
      put 't1','r2','cf1:cq1','2'
      put 't1','r2','cf1:cq2','3'
      put 't1','r3','cf1:cq1','3'
      put 't1','r3','cf1:cq2','4'
      put 't1','r4','cf1:cq1','4'
      put 't1','r4','cf1:cq2','5'
      java_import org.apache.hadoop.hbase.filter.SingleColumnValueFilter
      java_import org.apache.hadoop.hbase.util.Bytes
      java_import org.apache.hadoop.hbase.filter.CompareFilter
      java_import org.apache.hadoop.hbase.filter.FilterList
      filter1=SingleColumnValueFilter.new(Bytes::toBytes('cf1'),Bytes::toBytes('cq1'),CompareFilter::CompareOp::LESS_OR_EQUAL,Bytes::toBytes('2'))
      filter2=SingleColumnValueFilter.new(Bytes::toBytes('cf1'),Bytes::toBytes('cq2'),CompareFilter::CompareOp::GREATER_OR_EQUAL,Bytes::toBytes('5'))
      filterList1=FilterList.new(FilterList::Operator::MUST_PASS_ONE,filter1,filter2)
      filterList2=FilterList.new(FilterList::Operator::MUST_PASS_ALL,filter1,filter2)
      scan 't1',{COLUMNS=>['cf1:cq1'],FILTER =>filter1}
      scan 't1',{COLUMNS=>['cf1:cq2'],FILTER =>filter2}
      scan 't1',{COLUMNS=>['cf1:cq1'],FILTER =>filterList1}
      scan 't1',{COLUMNS=>['cf1:cq1'],FILTER =>filterList2} 

      when setFilterIfMissing.... it also wrong

       

      java_import org.apache.hadoop.hbase.filter.SingleColumnValueFilter
      java_import org.apache.hadoop.hbase.util.Bytes
      java_import org.apache.hadoop.hbase.filter.CompareFilter
      java_import org.apache.hadoop.hbase.filter.FilterList
      filter1=SingleColumnValueFilter.new(Bytes::toBytes('cf1'),Bytes::toBytes('cq1'),CompareFilter::CompareOp::LESS_OR_EQUAL,Bytes::toBytes('2'))
      filter1::setFilterIfMissing(true)
      filter2=SingleColumnValueFilter.new(Bytes::toBytes('cf1'),Bytes::toBytes('cq2'),CompareFilter::CompareOp::GREATER_OR_EQUAL,Bytes::toBytes('5'))
      filter2::setFilterIfMissing(true)
      filterList1=FilterList.new(FilterList::Operator::MUST_PASS_ONE,filter1,filter2)
      filterList2=FilterList.new(FilterList::Operator::MUST_PASS_ALL,filter1,filter2)
      scan 't1',{COLUMNS=>['cf1:cq1'],FILTER =>filter1}
      scan 't1',{COLUMNS=>['cf1:cq2'],FILTER =>filter2}
      scan 't1',{COLUMNS=>['cf1:cq1'],FILTER =>filterList1}
      scan 't1',{COLUMNS=>['cf1:cq1'],FILTER =>filterList2}  

       

       

      Attachments

        1. image-2023-07-13-17-34-03-488.png
          48 kB
          chaijunjie
        2. image-2023-08-04-17-54-04-346.png
          26 kB
          chaijunjie
        3. image-2023-08-04-17-54-57-967.png
          19 kB
          chaijunjie
        4. test2.PNG
          26 kB
          chaijunjie

        Activity

          People

            Unassigned Unassigned
            chaijunjie chaijunjie
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated: