[ 
https://issues.apache.org/jira/browse/HBASE-18410?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zheng Hu updated HBASE-18410:
-----------------------------
    Release Note: 
In this task, we fixed all existing bugs in FilterList, and did the code 
refactor which ensured interface compatibility .  

The primary bug  fixes are : 
1. For sub-filter in FilterList with MUST_PASS_ONE, if previous 
filterKeyValue() of sub-filter returns NEXT_COL, we cannot make sure that the 
next cell will be the first cell in next column, because FilterList choose the 
minimal forward step among sub-filters, and it may return a SKIP. so here we 
add an extra check to ensure that the next cell will match preivous return code 
for sub-filters. 
2. Previous logic about transforming cell of FilterList is incorrect, we should 
set the previous transform result (rather than the given cell in question) as 
the initial vaule of transform cell before call filterKeyValue() of FilterList.
3. Handle the ReturnCodes which the previous code did not handle. 

About code refactor, we divided the FilterList into two separated sub-classes: 
FilterListWithOR and FilterListWithAND,  The FilterListWithOR has been 
optimised to choose the next minimal step to seek cell rather than SKIP cell 
one by one, and the FilterListWithAND  has been optimised to choose the next 
maximal key to seek among sub-filters in filter list. All in all, The code in 
FilterList is clean and easier to follow now.

Note that ReturnCode NEXT_ROW has been redefined as skipping to next row in 
current family,   not to next row in all family. it’s more reasonable, because 
ReturnCode is a concept in store level, not in region level.

  was:
In this task, we fixed all existing bugs in FilterList, and did the code 
refactor which ensured interface compatibility .  

The primary bug  fixes are : 
1. For sub-filter in FilterList with MUST_PASS_ONE, if previous 
filterKeyValue() of sub-filter returns NEXT_COL, we cannot make sure that the 
next cell will be the first cell in next column, because FilterList choose the 
minimal forward step among sub-filters, and it may return a SKIP. so here we 
add an extra check to ensure that the next cell will match preivous return code 
for sub-filters. 
2. Previous logic about transforming cell of FilterList is incorrect, we should 
set the previous transform result as the initial vaule of transform cell before 
call filterKeyValue() of FilterList rather than the given cell in question.
3. Handle all exist ReturnCodes which the previous code did not. 

About code refactor, we divided the FilterList into two separated sub-classes: 
FilterListWithOR and FilterListWithAND,  The FilterListWithOR has been 
optimised to choose the next minimal step to seek cell rather than SKIP cell 
one by one, and the FilterListWithAND  has been optimised to choose the next 
maximal key to seek among sub-filters in filter list. All in all, The code in 
FilterList is clean and easier to follow now.

Note that ReturnCode NEXT_ROW has been redefined as skipping to next row in 
current family,   not to next row in all family. it’s more reasonable, because 
ReturnCode is a concept in store level, not in region level.


> FilterList  Improvement. 
> -------------------------
>
>                 Key: HBASE-18410
>                 URL: https://issues.apache.org/jira/browse/HBASE-18410
>             Project: HBase
>          Issue Type: Umbrella
>          Components: Filters
>            Reporter: Zheng Hu
>            Assignee: Zheng Hu
>             Fix For: 2.0.0-alpha-4
>
>
> FilterList.java is complex now, and we have found some improvements for it.  
> So create an issue to address it.    



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to