Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.0.0-beta-1
-
None
-
None
Description
filterAllRemaining() in FilterListWithOR will now return false if the filter list is empty whereas earlier it used to return true for Operator.MUST_PASS_ONE.
In HBase-2.0
@Override public boolean filterAllRemaining() throws IOException { if (isEmpty()) { return super.filterAllRemaining();//false } for (int i = 0, n = filters.size(); i < n; i++) { if (!filters.get(i).filterAllRemaining()) { return false; } } return true; }
Earlier versions(1.3.1 atleast):-
@Override public boolean filterAllRemaining() throws IOException { int listize = filters.size(); for (int i = 0; i < listize; i++) { if (filters.get(i).filterAllRemaining()) { if (operator == Operator.MUST_PASS_ALL) { return true; } } else { if (operator == Operator.MUST_PASS_ONE) { return false; } } } return operator == Operator.MUST_PASS_ONE; }
IMO, the current implementation seems to be right, but probably this change requires a release note at least as some people might have implemented the filters considering the old semantics.
Attachments
Issue Links
- relates to
-
PHOENIX-4496 Fix RowValueConstructorIT and IndexMetadataIT
- Resolved
-
HBASE-18410 FilterList Improvement.
- Resolved