You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Ankit Singhal (JIRA)" <ji...@apache.org> on 2017/12/27 05:24:00 UTC

[jira] [Created] (HBASE-19640) Change in filterAllRemaining() impl for FilterListWithOR

Ankit Singhal created HBASE-19640:
-------------------------------------

             Summary: Change in filterAllRemaining() impl for FilterListWithOR
                 Key: HBASE-19640
                 URL: https://issues.apache.org/jira/browse/HBASE-19640
             Project: HBase
          Issue Type: Bug
          Components: Filters
    Affects Versions: 2.0.0-beta-1
            Reporter: Ankit Singhal


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*
{code}
 @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;
  }
{code}

Earlier versions(1.3.1 atleast):-
{code}
@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;
  }
{code}


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.



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