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

chunhui shen commented on HBASE-8555:
-------------------------------------

bq.since the filter list maybe include other filters, not just row filter

Yes, other filters may has the same problem if result of filterKeyValue depends 
on filterRowKey. 

We could fix such problems if found and keep "filterRowKey may not be called 
when calling filterKeyValue " in mind.

I prefer to use a solution without decreasing performance significantly, 
as the current patch, more filters in filterList, more cost


Anyway, I'm OK if others no objection

                
> FilterList correctness was dominated by sub-filter(list) ordering randomly
> --------------------------------------------------------------------------
>
>                 Key: HBASE-8555
>                 URL: https://issues.apache.org/jira/browse/HBASE-8555
>             Project: HBase
>          Issue Type: Bug
>          Components: Filters
>    Affects Versions: 0.94.3
>            Reporter: Liang Xie
>            Assignee: Liang Xie
>            Priority: Critical
>         Attachments: 8555-trunk-v1.txt, HBASE-8555-0.94.txt, 
> HBASE-8555-0.94-v2.txt, HBASE-8555-0.94-v3.txt
>
>
> say, ther're 10 rows, column value is i%2:
> row0 0
> row1 1
> row2 0
> row3 1
> row4 0
> row5 1
> row6 0
> row7 1
> row8 0
> row9 1
> 1: filter : row filter > row4   ===> row5 row6 row7 row8 row9
> 2: subFilterList:  row filter <= row4 && column==0    ===> row0 row2 row4
> 3.1 filterlist[expected]   filter || subFilterList  ===> row0 row2 row4 row5 
> row6 row7 row8 row9
> 3.2 filterlist[BUGON!]  subFilterList || filter ===> row0 row1 row2 row3 row4 
> row5 row6 row7 row8 row9
> (Please refer to the new testNestedFilterListWithSCVF case)
> It was found when i managed to transform the following SQL into HBase scan 
> statement: 
> select xxx from xxx where (pk <= xxx and column1 = xxx) or pk > xxx
> My finding is that we had an assumption for filter methods call sequence:
> e.g. filterRowKey() should be called before filterKeyValue().
> and the orignial filterList.filterRowKey impl broke it due to fast 
> short-circuit returning.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to