[
https://issues.apache.org/jira/browse/HBASE-5951?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13270300#comment-13270300
]
Davis Abraham commented on HBASE-5951:
--------------------------------------
I'm trying to execute a query which should work like ColumnPrefixValueFilter
(Which is not available). To attain this i combined ColumnPrefixFilter with
valueFilter to search for a particular value in a set of columns.
Following is a SQL equivalent query even though it wont work in sql.
(Select * from namexxx where value like 'ABC%') AND (Select * from CRSxxx where
value like 'ED%')
The result i expect is the set of rows where both the above conditions are
satisfied.
I tried with some sample tables where ColumnFamily is same for all columns in
all rows.
>From Hbase documentations and blogs i understood the following hierarchy can
>be achieved using FilterList.
Filterlist1 = ColumnPrefixFilter1 + valueFilter1; (This alone will return
result)
Filterlist2 = ColumnPrefixFilter2 + valueFilter2; (This alone will also return
result)
Filterlist = Filterlist1 + Filterlist2; (Result is null when combined)
The result set is always null when Filterlist1 and Filterlist2 are applied
together.
> Combining ColumnPrefixFilters using filterlist.
> -----------------------------------------------
>
> Key: HBASE-5951
> URL: https://issues.apache.org/jira/browse/HBASE-5951
> Project: HBase
> Issue Type: Bug
> Components: filters
> Affects Versions: 0.92.1
> Environment: Combining multiple ColumnPrefixFilters using filterlist
> does not return exact result.
> Reporter: Davis Abraham
>
> FilterList listOfFilters = new FilterList (FilterList.Operator.MUST_PASS_ALL);
> FilterList listOfFilters1 = new FilterList
> (FilterList.Operator.MUST_PASS_ALL);
> FilterList listOfFilters2 = new FilterList
> (FilterList.Operator.MUST_PASS_ALL);
> SingleColumnValueFilter SingleFilter1 = new
> SingleColumnValueFilter(Bytes.toBytes("cf"),
> Bytes.toBytes("country"), CompareOp.EQUAL,
> Bytes.toBytes("USA"));
> listOfFilters.addFilter(SingleFilter1);
> ValueFilter VF1= new ValueFilter (CompareOp.EQUAL,
> new SubstringComparator("ABC"));
> ColumnPrefixFilter CF1= new ColumnPrefixFilter(Bytes.toBytes("name"));
> listOfFilters1.addFilter(CF1);
> listOfFilters1.addFilter(VF1);
> listOfFilters.addFilter(listOfFilters1);
> ValueFilter VF2= new ValueFilter (CompareOp.EQUAL,
> new SubstringComparator("ED"));
> ColumnPrefixFilter CF2= new ColumnPrefixFilter (Bytes.toBytes("CRS"));
> listOfFilters2.addFilter(CF2);
> listOfFilters2.addFilter(VF2);
> listOfFilters.addFilter(listOfFilters2);
> When i do a combibation of SingleFilter1 and listOfFilters1
> the result is correct, same way the combination of
> SingleFilter1 and listOfFilters2 is returing correct result.
> But when all the three is combined im not getting any result..
> Is it the problem with multiple ColumnPrefixFilter???
> Value "ABC" exist in name.0 and value "ED" exist in CRS.0 and it is in
> the same row under same Column Family.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira