[ 
https://issues.apache.org/jira/browse/HBASE-5951?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13270325#comment-13270325
 ] 

Anoop Sam John commented on HBASE-5951:
---------------------------------------

I think I somewhat got the usecase of yours. But for this you can not use the 
filters and the filter list as you have used in the pasted sample

Filterlist1 = ColumnPrefixFilter1 (namexxx) + valueFilter1; 
Filterlist2 = ColumnPrefixFilter2 (CRSxxx) + valueFilter2; 

Filterlist = Filterlist1 + Filterlist2; // AND condition

Here Filterlist1 will remove all the KVs (columns) other than the namexxx named 
column for a given row. So only that column(s) will be there in the result 
which is having a qualifier name starts with "name".
[This will even remove the KVs corresponding to CRSxxx column also]
Same way Filterlist2 will allow only columns with name CRSxxx to come out. This 
will filter out namexxxx columns also. So in the next step of filtering as per 
the final Filterlist , even the namexxx columns(KVs) also gone! So that is why 
ultimately you will not get any thing in the output..

For your need you need to write your own Filter implementation (like the one u 
said ColumnPrefixValueFilter) ...  U can not use the SingleColumnValueFilter 
also as it expects a column ( qualifier ) name but for you that name is also 
like not fixed. It is like CRSxxxx.....
                
> 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

        

Reply via email to