say, ther're 10 rows, column value is i%2:
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.