Niels' test is an end to end test. 
The issue is covered by a new test in TestFilterList. 

Cheers

On Feb 24, 2014, at 6:25 AM, Jean-Marc Spaggiari <[email protected]> 
wrote:

> Hi Ted,
> 
> Any reason why this was not failing of Jenkins too? Can we add
> https://github.com/nielsbasjes/HBase-filter-problem/ to the test suite?
> 
> JM
> 
> 
> 2014-02-19 6:51 GMT-05:00 Ted Yu <[email protected]>:
> 
>> Hi, Niels:
>> This issue has been fixed in HBASE-10485 and would be included in the
>> upcoming 0.94.17 release.
>> 
>> Cheers
>> 
>> On Feb 3, 2014, at 7:56 AM, Niels Basjes <[email protected]> wrote:
>> 
>>> Additional info:
>>> If I replace the NEXT_COL in the filter into either SKIP or NEXT_ROW the
>>> result remains the same.
>>> 
>>> 
>>> On Mon, Feb 3, 2014 at 2:27 PM, Niels Basjes <[email protected]> wrote:
>>> 
>>>> Hi,
>>>> 
>>>> I'm trying to write a custom filter that is to be used (in my use case)
>> in
>>>> a FilterList.
>>>> Because I ran into something I do not understand I reduced the code to
>> the
>>>> absolute minimal and posted it here:
>>>> https://github.com/nielsbasjes/HBase-filter-problem
>>>> 
>>>> What I now have (just to show my problem) is a filter (classname
>>>> = AlwaysNextColFilter) that only implements
>>>> 
>>>>   @Override
>>>>   public ReturnCode filterKeyValue(KeyValue v) {
>>>>       return ReturnCode.NEXT_COL;
>>>>   }
>>>> 
>>>> 
>>>> The expected behavior is that this filter should indicate to everything
>>>> that is offered that it should be filtered out.
>>>> 
>>>> I then:
>>>>       utility = new HBaseTestingUtility();
>>>>       utility.startMiniCluster();
>>>> 
>>>> and I put some rows in there.
>>>> 
>>>>       Put put = new Put("Row AA".getBytes());
>>>>       put.add(colFamBytes, "Col A".getBytes(), "Foo".getBytes());
>>>>       table.put(put);
>>>> 
>>>>       put = new Put("Row BB".getBytes());
>>>>       put.add(colFamBytes, "Col B".getBytes(), "FooFoo".getBytes());
>>>>       table.put(put);
>>>> 
>>>>       put = new Put("Row CC".getBytes());
>>>>       put.add(colFamBytes, "Col C".getBytes(), "Bar".getBytes());
>>>>       table.put(put);
>>>> 
>>>>       put = new Put("Row DD".getBytes());
>>>>       put.add(colFamBytes, "Col D".getBytes(), "BarBar".getBytes());
>>>>       table.put(put);
>>>> 
>>>> Now I create a scan (to scan the entire table ... of 4 rows) and I set
>> the
>>>> filters.
>>>> 
>>>> 1) With this I get an empty result set. * (= Good/As I expect it)*
>>>>       s.setFilter(new *AlwaysNextColFilter()*);
>>>> 
>>>> 2) With this I get an empty result set. * (= Good/As I expect it)*
>>>>       FilterList flist = new
>>>> FilterList(FilterList.Operator.MUST_PASS_ONE);
>>>>       flist.addFilter(new *AlwaysNextColFilter()*);
>>>>       s.setFilter(flist);
>>>> 
>>>> 3) With this I get only the rows starting with "Row B". * (= Good/As I
>>>> expect it)*
>>>>       FilterList flist = new
>>>> FilterList(FilterList.Operator.MUST_PASS_ONE);
>>>>       flist.addFilter(new *PrefixFilter("Row B".getBytes())*);
>>>>       s.setFilter(flist);
>>>> 
>>>> 4) With this I get only the rows starting with "Row A" and "Row B".  *(=
>>>> NOT as I expect it)*
>>>>       FilterList flist = new
>>>> FilterList(FilterList.Operator.MUST_PASS_ONE);
>>>>       flist.addFilter(new *AlwaysNextColFilter()*);
>>>>       flist.addFilter(new *PrefixFilter("Row B".getBytes())*);
>>>>       s.setFilter(flist);
>>>> 
>>>> In 4) I expected to get ONLY the rows starting with "Row B" because
>> these
>>>> are the only ones that "PASS" at least one of the provided filters.
>>>> 
>>>> Did I misunderstand the way this should work ... or is this bug ( in
>>>> FilterList? )?
>>>> 
>>>> --
>>>> Best regards / Met vriendelijke groeten,
>>>> 
>>>> Niels Basjes
>>> 
>>> 
>>> 
>>> --
>>> Best regards / Met vriendelijke groeten,
>>> 
>>> Niels Basjes
>> 

Reply via email to