Peter Somogyi created HBASE-18368:
-------------------------------------

             Summary: Filters with OR does not work
                 Key: HBASE-18368
                 URL: https://issues.apache.org/jira/browse/HBASE-18368
             Project: HBase
          Issue Type: Bug
          Components: Filters
    Affects Versions: 2.0.0, 3.0.0
            Reporter: Peter Somogyi
            Priority: Critical


Scan gives back incomplete list if multiple filters are combined with OR / 
MUST_PASS_ONE.
Using 2 FamilyFilters in a FilterList using MUST_PASS_ONE operator will give 
back results for only the first Filter.

{code:java|title=Test code}
  @Test
  public void testFiltersWithOr() throws Exception {
    TableName tn = TableName.valueOf("MyTest");
    Table table = utility.createTable(tn, new String[] {"cf1", "cf2"});

    byte[] CF1 = Bytes.toBytes("cf1");
    byte[] CF2 = Bytes.toBytes("cf2");

    Put put1 = new Put(Bytes.toBytes("0"));
    put1.addColumn(CF1, Bytes.toBytes("col_a"), Bytes.toBytes(0));
    table.put(put1);

    Put put2 = new Put(Bytes.toBytes("0"));
    put2.addColumn(CF2, Bytes.toBytes("col_b"), Bytes.toBytes(0));
    table.put(put2);

    FamilyFilter filterCF1 = new FamilyFilter(CompareFilter.CompareOp.EQUAL, 
new BinaryComparator(CF1));
    FamilyFilter filterCF2 = new FamilyFilter(CompareFilter.CompareOp.EQUAL, 
new BinaryComparator(CF2));

    FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE);

    filterList.addFilter(filterCF1);
    filterList.addFilter(filterCF2);

    Scan scan = new Scan();
    scan.setFilter(filterList);

    ResultScanner scanner = table.getScanner(scan);

    System.out.println(filterList);

    for (Result rr = scanner.next(); rr != null; rr = scanner.next()) {
      System.out.println(rr);
    }
  }
{code}

{noformat:title=Output}
FilterList OR (2/2): [FamilyFilter (EQUAL, cf1), FamilyFilter (EQUAL, cf2)]
keyvalues={0/cf1:col_a/1499852754957/Put/vlen=4/seqid=0}
{noformat}



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

Reply via email to