Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
2.4.14
-
None
-
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}