/**
* Copyright 2011 The Apache Software Foundation
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.hbase.index.coprocessor.regionserver;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import junit.framework.TestCase;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HRegionInfo;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.MediumTests;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.FilterList.Operator;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.index.ColumnQualifier.ValueType;
import org.apache.hadoop.hbase.index.IndexSpecification;
import org.apache.hadoop.hbase.index.filter.SingleColumnRangeFilter;
import org.apache.hadoop.hbase.index.manager.IndexManager;
import org.apache.hadoop.hbase.regionserver.HRegion;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.experimental.categories.Category;
@Category(MediumTests.class)
public class TestScanFilterEvaluator extends TestCase {
/* public void testCircularList() throws Exception{
ScanFilterEvaluator.CirularDoublyLinkedList cir = new ScanFilterEvaluator.CirularDoublyLinkedList();
cir.add(10);
cir.add(23);
cir.add(45);
Node head = cir.getHead();
//System.out.println(head);
Node next = head;
for(int i = 0; i< 100; i++){
next = cir.next(next);
System.out.println(next);
}
}*/
/* public void testName1() throws Exception {
ScanFilterEvaluator mapper = new ScanFilterEvaluator();
List<IndexSpecification> indices = new ArrayList<IndexSpecification>();
// create the indices.
indices.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c1", "c2" }, "idx1"));
indices.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c1" }, "idx2"));
indices.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c2" }, "idx3"));
indices.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c2", "c1" }, "idx4"));
FilterList masterFilter = new FilterList(Operator.MUST_PASS_ALL);
// create the filter
FilterList filter = new FilterList(Operator.MUST_PASS_ALL);
IndexedSingleColumnValueFilter iscvf1 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c1".getBytes(), CompareOp.EQUAL, "a".getBytes());
IndexedSingleColumnValueFilter iscvf2 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c2".getBytes(), CompareOp.EQUAL, "K".getBytes());
filter.addFilter(iscvf1);
filter.addFilter(iscvf2);
FilterList filter1 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c3".getBytes(), CompareOp.EQUAL, "a".getBytes());
iscvf2 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c4".getBytes(), CompareOp.EQUAL, "K".getBytes());
filter1.addFilter(iscvf1);
filter1.addFilter(iscvf2);
FilterList filter2 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c5".getBytes(), CompareOp.EQUAL, "a".getBytes());
iscvf2 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c6".getBytes(), CompareOp.GREATER, "K".getBytes());
filter2.addFilter(iscvf1);
filter2.addFilter(iscvf2);
masterFilter.addFilter(filter);
masterFilter.addFilter(filter1);
masterFilter.addFilter(filter2);
// mapper.evaluate(masterFilter, indices);
}*/
private static final String COLUMN_FAMILY = "MyCF";
static HRegion region = null;
private static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();
private static final String DIR = TEST_UTIL.getDataTestDir("TestScanFilterEvaluator").toString();
static String method = "TestScanFilterEvaluator";
static byte[] tableName = Bytes.toBytes(method);
static byte[] family = Bytes.toBytes("family");
static byte[] qual = Bytes.toBytes("q");
private final int MAX_VERSIONS = 2;
private static HRegion initHRegion(byte[] tableName, String callingMethod, Configuration conf,
byte[]... families) throws IOException {
return initHRegion(tableName, null, null, callingMethod, conf, families);
}
/**
* @param tableName
* @param startKey
* @param stopKey
* @param callingMethod
* @param conf
* @param families
* @throws IOException
* @return A region on which you must call {@link HRegion#closeHRegion(HRegion)} when done.
*/
private static HRegion initHRegion(byte[] tableName, byte[] startKey, byte[] stopKey,
String callingMethod, Configuration conf, byte[]... families) throws IOException {
HTableDescriptor htd = new HTableDescriptor(tableName);
for (byte[] family : families) {
htd.addFamily(new HColumnDescriptor(family));
}
HRegionInfo info = new HRegionInfo(htd.getName(), startKey, stopKey, false);
Path path = new Path(DIR + callingMethod);
FileSystem fs = FileSystem.get(conf);
if (fs.exists(path)) {
if (!fs.delete(path, true)) {
throw new IOException("Failed delete of " + path);
}
}
return HRegion.createHRegion(info, path, conf, htd);
}
public void testName2() throws Exception {
Configuration conf = HBaseConfiguration.create();
region = initHRegion(tableName, method, conf, family);
ArrayList<IndexSpecification> arrayList = new ArrayList<IndexSpecification>();
List<IndexSpecification> indices = arrayList;
ScanFilterEvaluator mapper = new ScanFilterEvaluator();
// create the indices.
indices.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c1", "c2",
"c3", "c4", "c5", "c6", "c7" }, "idx1"));
indices
.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c1" }, "idx2"));
indices
.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c2" }, "idx3"));
indices.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c2", "c1" },
"idx4"));
FilterList masterFilter = new FilterList(Operator.MUST_PASS_ALL);
// create the filter
FilterList filter = new FilterList(Operator.MUST_PASS_ALL);
SingleColumnValueFilter iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"a".getBytes());
SingleColumnValueFilter iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c2".getBytes(), CompareOp.EQUAL,
"K".getBytes());
filter.addFilter(iscvf1);
filter.addFilter(iscvf2);
FilterList filter1 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c3".getBytes(), CompareOp.EQUAL,
"a".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c4".getBytes(), CompareOp.EQUAL,
"K".getBytes());
filter1.addFilter(iscvf1);
filter1.addFilter(iscvf2);
FilterList filter2 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c5".getBytes(), CompareOp.EQUAL,
"a".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c6".getBytes(), CompareOp.EQUAL,
"K".getBytes());
SingleColumnValueFilter iscvf3 =
new SingleColumnValueFilter("cf1".getBytes(), "c7".getBytes(), CompareOp.EQUAL,
"K".getBytes());
filter2.addFilter(iscvf1);
filter2.addFilter(iscvf2);
// filter2.addFilter(iscvf3);
masterFilter.addFilter(filter);
masterFilter.addFilter(filter1);
masterFilter.addFilter(filter2);
Scan scan = new Scan();
scan.setFilter(masterFilter);
// Will throw null pointer here.
IndexSpecification indexSpec = new IndexSpecification("a");
indexSpec
.addIndexColumn(new HColumnDescriptor(family), Bytes.toString(qual), ValueType.Int, 10);
boolean add = arrayList.add(indexSpec);
IndexManager.getInstance().addIndexForTable(this.region.getTableDesc().getNameAsString(),
arrayList);
mapper.evaluate(scan, indices, new byte[0], this.region, this.region.getTableDesc()
.getNameAsString());
}
public void testDiffCombinations() throws Exception {
Configuration conf = HBaseConfiguration.create();
region = initHRegion(tableName, "testDiffCombinations", conf, family);
ScanFilterEvaluator mapper = new ScanFilterEvaluator();
List<IndexSpecification> indices = new ArrayList<IndexSpecification>();
// create the indices.
indices.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c2", "c3",
"c4", "c5", "c6" }, "idx1"));
indices.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c2", "c1",
"c3", "c4" }, "idx4"));
FilterList masterFilter = new FilterList(Operator.MUST_PASS_ALL);
// create the filter
FilterList filter = new FilterList(Operator.MUST_PASS_ALL);
SingleColumnValueFilter iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"a".getBytes());
SingleColumnValueFilter iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c2".getBytes(), CompareOp.EQUAL,
"K".getBytes());
filter.addFilter(iscvf1);
filter.addFilter(iscvf2);
FilterList filter1 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c3".getBytes(), CompareOp.EQUAL,
"a".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c4".getBytes(), CompareOp.EQUAL,
"K".getBytes());
filter1.addFilter(iscvf1);
filter1.addFilter(iscvf2);
FilterList filter2 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c5".getBytes(), CompareOp.EQUAL,
"a".getBytes());
filter2.addFilter(iscvf1);
// filter2.addFilter(iscvf3);
masterFilter.addFilter(filter);
masterFilter.addFilter(filter1);
masterFilter.addFilter(filter2);
Scan scan = new Scan();
scan.setFilter(masterFilter);
IndexManager.getInstance().addIndexForTable(this.region.getTableDesc().getNameAsString(),
indices);
mapper.evaluate(scan, indices, new byte[0], this.region, this.region.getTableDesc()
.getNameAsString());
}
public void testDiffCombinations1() throws Exception {
Configuration conf = HBaseConfiguration.create();
region = initHRegion(tableName, "testDiffCombinations1", conf, family);
ScanFilterEvaluator mapper = new ScanFilterEvaluator();
List<IndexSpecification> indices = new ArrayList<IndexSpecification>();
// create the indices.
indices.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c2", "c3",
"c4", }, "idx1"));
indices.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c2", "c1" },
"idx2"));
indices
.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c5" }, "idx3"));
FilterList masterFilter = new FilterList(Operator.MUST_PASS_ALL);
// create the filter
FilterList filter = new FilterList(Operator.MUST_PASS_ALL);
SingleColumnValueFilter iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"a".getBytes());
SingleColumnValueFilter iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c2".getBytes(), CompareOp.EQUAL,
"K".getBytes());
filter.addFilter(iscvf1);
filter.addFilter(iscvf2);
FilterList filter1 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c3".getBytes(), CompareOp.EQUAL,
"a".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c4".getBytes(), CompareOp.EQUAL,
"K".getBytes());
filter1.addFilter(iscvf1);
filter1.addFilter(iscvf2);
FilterList filter2 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c5".getBytes(), CompareOp.EQUAL,
"a".getBytes());
filter2.addFilter(iscvf1);
// filter2.addFilter(iscvf3);
masterFilter.addFilter(filter);
masterFilter.addFilter(filter1);
masterFilter.addFilter(filter2);
Scan scan = new Scan();
scan.setFilter(masterFilter);
IndexManager.getInstance().addIndexForTable(this.region.getTableDesc().getNameAsString(),
indices);
mapper.evaluate(scan, indices, new byte[0], this.region, this.region.getTableDesc()
.getNameAsString());
}
public void testDiffCombinations2() throws Exception {
Configuration conf = HBaseConfiguration.create();
region = initHRegion(tableName, "testDiffCombinations2", conf, family);
ScanFilterEvaluator mapper = new ScanFilterEvaluator();
List<IndexSpecification> indices = new ArrayList<IndexSpecification>();
// create the indices.
indices.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c2", "c3" },
"idx1"));
indices.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c2", "c1" },
"idx2"));
indices
.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c5" }, "idx3"));
FilterList masterFilter = new FilterList(Operator.MUST_PASS_ALL);
// create the filter
FilterList filter = new FilterList(Operator.MUST_PASS_ALL);
SingleColumnValueFilter iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"a".getBytes());
SingleColumnValueFilter iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c2".getBytes(), CompareOp.EQUAL,
"K".getBytes());
filter.addFilter(iscvf1);
filter.addFilter(iscvf2);
FilterList filter1 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c3".getBytes(), CompareOp.EQUAL,
"a".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c4".getBytes(), CompareOp.EQUAL,
"K".getBytes());
filter1.addFilter(iscvf1);
filter1.addFilter(iscvf2);
FilterList filter2 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c5".getBytes(), CompareOp.EQUAL,
"a".getBytes());
filter2.addFilter(iscvf1);
// filter2.addFilter(iscvf3);
masterFilter.addFilter(filter);
masterFilter.addFilter(filter1);
masterFilter.addFilter(filter2);
Scan scan = new Scan();
scan.setFilter(masterFilter);
IndexManager.getInstance().addIndexForTable(this.region.getTableDesc().getNameAsString(),
indices);
mapper.evaluate(scan, indices, new byte[0], this.region, this.region.getTableDesc()
.getNameAsString());
}
public void testDiffCombinations3() throws Exception {
Configuration conf = HBaseConfiguration.create();
region = initHRegion(tableName, "testDiffCombinations3", conf, family);
ScanFilterEvaluator mapper = new ScanFilterEvaluator();
List<IndexSpecification> indices = new ArrayList<IndexSpecification>();
// create the indices.
indices.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c2", "c3" },
"idx1"));
indices
.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c1" }, "idx2"));
indices
.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c5" }, "idx3"));
indices
.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c4" }, "idx4"));
indices
.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c6" }, "idx5"));
FilterList masterFilter = new FilterList(Operator.MUST_PASS_ALL);
// create the filter
FilterList filter = new FilterList(Operator.MUST_PASS_ALL);
SingleColumnValueFilter iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"a".getBytes());
SingleColumnValueFilter iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c2".getBytes(), CompareOp.EQUAL,
"K".getBytes());
filter.addFilter(iscvf1);
filter.addFilter(iscvf2);
FilterList filter1 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c3".getBytes(), CompareOp.EQUAL,
"a".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c4".getBytes(), CompareOp.EQUAL,
"K".getBytes());
filter1.addFilter(iscvf1);
filter1.addFilter(iscvf2);
FilterList filter2 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c5".getBytes(), CompareOp.EQUAL,
"a".getBytes());
filter2.addFilter(iscvf1);
// filter2.addFilter(iscvf3);
masterFilter.addFilter(filter);
masterFilter.addFilter(filter1);
masterFilter.addFilter(filter2);
Scan scan = new Scan();
scan.setFilter(masterFilter);
IndexManager.getInstance().addIndexForTable(this.region.getTableDesc().getNameAsString(),
indices);
mapper.evaluate(scan, indices, new byte[0], this.region, this.region.getTableDesc()
.getNameAsString());
}
public void testWhenORWithSameColumnAppearsinDiffChild() throws Exception {
Configuration conf = HBaseConfiguration.create();
region = initHRegion(tableName, "tesWhenORWithSameColumnAppearsinDiffChild", conf, family);
ScanFilterEvaluator mapper = new ScanFilterEvaluator();
List<IndexSpecification> indices = new ArrayList<IndexSpecification>();
// create the indices.
indices.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c2", "c3" },
"idx1"));
indices
.add(createIndexSpecification("cf1", ValueType.String, 10, new String[] { "c1" }, "idx2"));
FilterList masterFilter = new FilterList(Operator.MUST_PASS_ONE);
// create the filter
FilterList filter = new FilterList(Operator.MUST_PASS_ALL);
SingleColumnValueFilter iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"a".getBytes());
SingleColumnValueFilter iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c2".getBytes(), CompareOp.EQUAL,
"K".getBytes());
filter.addFilter(iscvf1);
filter.addFilter(iscvf2);
SingleColumnValueFilter iscvf3 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"d".getBytes());
// filter2.addFilter(iscvf3);
masterFilter.addFilter(filter);
masterFilter.addFilter(iscvf3);
Scan scan = new Scan();
scan.setFilter(masterFilter);
IndexManager.getInstance().addIndexForTable(this.region.getTableDesc().getNameAsString(),
indices);
mapper.evaluate(scan, indices, new byte[0], this.region, this.region.getTableDesc()
.getNameAsString());
}
public void testWhenORConditionAppears() throws Exception {
Configuration conf = HBaseConfiguration.create();
region = initHRegion(tableName, "testWhenORConditionAppears", conf, family);
ScanFilterEvaluator mapper = new ScanFilterEvaluator();
FilterList masterFilter = new FilterList(Operator.MUST_PASS_ONE);
// create the filter
FilterList filter = new FilterList(Operator.MUST_PASS_ALL);
SingleColumnValueFilter iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"a".getBytes());
SingleColumnValueFilter iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c2".getBytes(), CompareOp.EQUAL,
"K".getBytes());
filter.addFilter(iscvf1);
filter.addFilter(iscvf2);
FilterList filter1 = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c3".getBytes(), CompareOp.EQUAL,
"a".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c4".getBytes(), CompareOp.EQUAL,
"K".getBytes());
filter1.addFilter(iscvf1);
filter1.addFilter(iscvf2);
FilterList filter2 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c5".getBytes(), CompareOp.GREATER,
Bytes.toBytes(10));
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c6".getBytes(), CompareOp.EQUAL,
Bytes.toBytes(100));
filter2.addFilter(iscvf1);
filter2.addFilter(iscvf2);
masterFilter.addFilter(filter);
masterFilter.addFilter(filter1);
masterFilter.addFilter(filter2);
Filter doFiltersRestruct = mapper.doFiltersRestruct(masterFilter);
// System.out.println(doFiltersRestruct);
/*
* if (doFiltersRestruct instanceof FilterList) { FilterList list = ((FilterList)
* doFiltersRestruct); assertEquals(3, list.getFilters().size()); }
*/
}
public void testORFiltersGrouping() throws Exception {
ScanFilterEvaluator mapper = new ScanFilterEvaluator();
FilterList masterFilter = new FilterList(Operator.MUST_PASS_ONE);
SingleColumnValueFilter iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"10".getBytes());
SingleColumnValueFilter iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
"10".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
Filter resultFilter = mapper.doFiltersRestruct(masterFilter);
List<Filter> filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
"10".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"10".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS_OR_EQUAL,
"10".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"10".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"10".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS_OR_EQUAL,
"10".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"10".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"10".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER_OR_EQUAL,
"10".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"10".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"10".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"10".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"10".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER_OR_EQUAL,
"10".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"10".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"10".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnValueFilter);
assertTrue(((SingleColumnValueFilter) filterList.get(0)).getOperator().equals(CompareOp.EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
"10".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"10".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 2);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS));
assertTrue(((SingleColumnRangeFilter) filterList.get(1)).getLowerBoundOp().equals(
CompareOp.GREATER));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"10".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
"10".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 2);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER));
assertTrue(((SingleColumnRangeFilter) filterList.get(1)).getUpperBoundOp().equals(
CompareOp.LESS));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER_OR_EQUAL,
"10".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
"10".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 2);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER_OR_EQUAL));
assertTrue(((SingleColumnRangeFilter) filterList.get(1)).getUpperBoundOp().equals(
CompareOp.LESS));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"10".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS_OR_EQUAL,
"10".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 2);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER));
assertTrue(((SingleColumnRangeFilter) filterList.get(1)).getUpperBoundOp().equals(
CompareOp.LESS_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"10".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"10".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"10".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER_OR_EQUAL,
"10".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER_OR_EQUAL,
"10".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"10".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
"10".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
"10".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
"10".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS_OR_EQUAL,
"10".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS_OR_EQUAL,
"10".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
"10".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS_OR_EQUAL,
"9".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
"9".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS_OR_EQUAL,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS_OR_EQUAL,
"9".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
"9".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS_OR_EQUAL,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"9".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER_OR_EQUAL,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER_OR_EQUAL,
"9".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"9".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER_OR_EQUAL,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER_OR_EQUAL,
"9".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"9".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"9".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER_OR_EQUAL,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"9".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"9".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER_OR_EQUAL,
"9".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 2);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(filterList.get(1) instanceof SingleColumnValueFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER_OR_EQUAL));
assertTrue(((SingleColumnValueFilter) filterList.get(1)).getOperator().equals(CompareOp.EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"9".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 2);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(filterList.get(1) instanceof SingleColumnValueFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER));
assertTrue(((SingleColumnValueFilter) filterList.get(1)).getOperator().equals(CompareOp.EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
"5".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"9".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 2);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(filterList.get(1) instanceof SingleColumnValueFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS));
assertTrue(((SingleColumnValueFilter) filterList.get(1)).getOperator().equals(CompareOp.EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
"5".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"2".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS_OR_EQUAL,
"5".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"2".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"5".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"7".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER_OR_EQUAL,
"5".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"7".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"2".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"2".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS_OR_EQUAL,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"7".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
"7".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER_OR_EQUAL,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
"3".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS_OR_EQUAL,
"3".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS_OR_EQUAL,
"3".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS_OR_EQUAL,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getUpperBoundOp().equals(
CompareOp.LESS_OR_EQUAL));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"3".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
"3".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER_OR_EQUAL,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER));
masterFilter = new FilterList(Operator.MUST_PASS_ONE);
iscvf1 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER_OR_EQUAL,
"3".getBytes());
iscvf2 =
new SingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER_OR_EQUAL,
"5".getBytes());
masterFilter.addFilter(iscvf1);
masterFilter.addFilter(iscvf2);
resultFilter = mapper.doFiltersRestruct(masterFilter);
filterList = ((FilterList) resultFilter).getFilters();
assertTrue(filterList.size() == 1);
assertTrue(filterList.get(0) instanceof SingleColumnRangeFilter);
assertTrue(((SingleColumnRangeFilter) filterList.get(0)).getLowerBoundOp().equals(
CompareOp.GREATER_OR_EQUAL));
}
/*public void testWhenColNamesAreRepeated() throws Exception {
ScanFilterEvaluator mapper = new ScanFilterEvaluator();
FilterList masterFilter = new FilterList(Operator.MUST_PASS_ALL);
// create the filter
FilterList filter = new FilterList(Operator.MUST_PASS_ALL);
IndexedSingleColumnValueFilter iscvf1 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c1".getBytes(), CompareOp.EQUAL, "a".getBytes());
IndexedSingleColumnValueFilter iscvf2 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c1".getBytes(), CompareOp.EQUAL, "K".getBytes());
filter.addFilter(iscvf1);
filter.addFilter(iscvf2);
FilterList filter1 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c3".getBytes(), CompareOp.EQUAL, "a".getBytes());
iscvf2 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c4".getBytes(), CompareOp.EQUAL, "K".getBytes());
filter1.addFilter(iscvf1);
filter1.addFilter(iscvf2);
masterFilter.addFilter(filter);
masterFilter.addFilter(filter1);
Filter doFiltersRestruct = mapper.doFiltersRestruct(masterFilter);
if (doFiltersRestruct instanceof FilterList) {
FilterList list = ((FilterList) doFiltersRestruct);
assertEquals(3, list.getFilters().size());
List<Filter> filters = list.getFilters();
for (Filter filter2 : filters) {
if(filter2 instanceof SingleColumnValueFilter){
SingleColumnValueFilter scvf = (SingleColumnValueFilter)filter2;
if(Bytes.equals(scvf.getQualifier(), "c1".getBytes())){
assertTrue(Bytes.equals("K".getBytes(), scvf.getComparator().getValue()));
}
}
}
}
}
public void testWhenSameColsConditionsComeMoreThanOnce() throws Exception{
FilterList masterFilter = new FilterList(Operator.MUST_PASS_ALL);
// create the filter
FilterList filter = new FilterList(Operator.MUST_PASS_ALL);
IndexedSingleColumnValueFilter iscvf1 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c1".getBytes(), CompareOp.GREATER, Bytes.toBytes(20));
IndexedSingleColumnValueFilter iscvf2 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c1".getBytes(), CompareOp.LESS, Bytes.toBytes(20));
filter.addFilter(iscvf1);
filter.addFilter(iscvf2);
FilterList filter1 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c3".getBytes(), CompareOp.EQUAL, Bytes.toBytes(10));
iscvf2 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c4".getBytes(), CompareOp.EQUAL, Bytes.toBytes(100));
filter1.addFilter(iscvf1);
filter1.addFilter(iscvf2);
FilterList filter2 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c1".getBytes(), CompareOp.GREATER, Bytes.toBytes(10));
iscvf2 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c4".getBytes(), CompareOp.EQUAL, Bytes.toBytes(100));
filter2.addFilter(iscvf1);
filter2.addFilter(iscvf2);
masterFilter.addFilter(filter);
masterFilter.addFilter(filter1);
masterFilter.addFilter(filter2);
ScanFilterEvaluator mapper = new ScanFilterEvaluator();
Filter doFiltersRestruct = mapper.doFiltersRestruct(masterFilter);
if (doFiltersRestruct instanceof FilterList) {
FilterList list = ((FilterList) doFiltersRestruct);
assertEquals(2, list.getFilters().size());
}
}
public void testShouldTakeOnlyTheEqualConditionWhenGreaterAlsoComes() throws Exception {
ScanFilterEvaluator mapper = new ScanFilterEvaluator();
FilterList masterFilter = new FilterList(Operator.MUST_PASS_ALL);
// create the filter
FilterList filter = new FilterList(Operator.MUST_PASS_ALL);
IndexedSingleColumnValueFilter iscvf1 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c1".getBytes(), CompareOp.GREATER, Bytes.toBytes(20));
IndexedSingleColumnValueFilter iscvf2 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c2".getBytes(), CompareOp.EQUAL, Bytes.toBytes(20));
filter.addFilter(iscvf1);
filter.addFilter(iscvf2);
FilterList filter1 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 = new IndexedSingleColumnValueFilter("cf1".getBytes(), "c3".getBytes(), CompareOp.EQUAL,
Bytes.toBytes(10));
iscvf2 = new IndexedSingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.EQUAL,
Bytes.toBytes(100));
filter1.addFilter(iscvf1);
filter1.addFilter(iscvf2);
masterFilter.addFilter(filter);
masterFilter.addFilter(filter1);
Filter doFiltersRestruct = mapper.doFiltersRestruct(masterFilter);
if (doFiltersRestruct instanceof FilterList) {
FilterList list = ((FilterList) doFiltersRestruct);
assertEquals(3, list.getFilters().size());
}
}
public void testShouldTakeOnlyTheEqualConditionWhenLesserAlsoComes() throws Exception{
ScanFilterEvaluator mapper = new ScanFilterEvaluator();
FilterList masterFilter = new FilterList(Operator.MUST_PASS_ALL);
// create the filter
FilterList filter = new FilterList(Operator.MUST_PASS_ALL);
IndexedSingleColumnValueFilter iscvf1 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c1".getBytes(), CompareOp.EQUAL, Bytes.toBytes(20));
IndexedSingleColumnValueFilter iscvf2 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c2".getBytes(), CompareOp.EQUAL, Bytes.toBytes(20));
filter.addFilter(iscvf1);
filter.addFilter(iscvf2);
FilterList filter1 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 = new IndexedSingleColumnValueFilter("cf1".getBytes(), "c3".getBytes(), CompareOp.EQUAL,
Bytes.toBytes(10));
iscvf2 = new IndexedSingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
Bytes.toBytes(100));
filter1.addFilter(iscvf1);
filter1.addFilter(iscvf2);
masterFilter.addFilter(filter);
masterFilter.addFilter(filter1);
Filter doFiltersRestruct = mapper.doFiltersRestruct(masterFilter);
if (doFiltersRestruct instanceof FilterList) {
FilterList list = ((FilterList) doFiltersRestruct);
assertEquals(3, list.getFilters().size());
List<Filter> filters = list.getFilters();
for (Filter filter2 : filters) {
if (filter2 instanceof SingleColumnValueFilter) {
SingleColumnValueFilter scvf = (SingleColumnValueFilter) filter2;
if (Bytes.equals(scvf.getQualifier(), "c1".getBytes())) {
assertEquals(CompareOp.EQUAL, scvf.getOperator());
}
}
}
}
}
public void testShouldNotIncludeFilterIfTheRangeConditionIsWrong() throws Exception{
ScanFilterEvaluator mapper = new ScanFilterEvaluator();
FilterList masterFilter = new FilterList(Operator.MUST_PASS_ALL);
// create the filter
FilterList filter = new FilterList(Operator.MUST_PASS_ALL);
IndexedSingleColumnValueFilter iscvf1 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c1".getBytes(), CompareOp.LESS, Bytes.toBytes(10));
IndexedSingleColumnValueFilter iscvf2 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c2".getBytes(), CompareOp.EQUAL, Bytes.toBytes(20));
filter.addFilter(iscvf1);
filter.addFilter(iscvf2);
FilterList filter1 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 = new IndexedSingleColumnValueFilter("cf1".getBytes(), "c3".getBytes(), CompareOp.EQUAL,
Bytes.toBytes(10));
iscvf2 = new IndexedSingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
Bytes.toBytes(100));
filter1.addFilter(iscvf1);
filter1.addFilter(iscvf2);
masterFilter.addFilter(filter);
masterFilter.addFilter(filter1);
Filter doFiltersRestruct = mapper.doFiltersRestruct(masterFilter);
if (doFiltersRestruct instanceof FilterList) {
FilterList list = ((FilterList) doFiltersRestruct);
assertEquals(2, list.getFilters().size());
}
}
public void testShouldTakeOnlyTheHighestFilterWhenTwoGreaterConditonsAreFound() throws Exception{
ScanFilterEvaluator mapper = new ScanFilterEvaluator();
FilterList masterFilter = new FilterList(Operator.MUST_PASS_ALL);
// create the filter
FilterList filter = new FilterList(Operator.MUST_PASS_ALL);
IndexedSingleColumnValueFilter iscvf1 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c1".getBytes(), CompareOp.GREATER, Bytes.toBytes(10));
IndexedSingleColumnValueFilter iscvf2 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c2".getBytes(), CompareOp.EQUAL, Bytes.toBytes(20));
filter.addFilter(iscvf1);
filter.addFilter(iscvf2);
FilterList filter1 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 = new IndexedSingleColumnValueFilter("cf1".getBytes(), "c3".getBytes(), CompareOp.EQUAL,
Bytes.toBytes(10));
iscvf2 = new IndexedSingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.GREATER,
Bytes.toBytes(100));
filter1.addFilter(iscvf1);
filter1.addFilter(iscvf2);
masterFilter.addFilter(filter);
masterFilter.addFilter(filter1);
Filter doFiltersRestruct = mapper.doFiltersRestruct(masterFilter);
if (doFiltersRestruct instanceof FilterList) {
FilterList list = ((FilterList) doFiltersRestruct);
assertEquals(3, list.getFilters().size());
List<Filter> filters = list.getFilters();
for (Filter filter2 : filters) {
if (filter2 instanceof SingleColumnValueFilter) {
SingleColumnValueFilter scvf = (SingleColumnValueFilter) filter2;
if (Bytes.equals(scvf.getQualifier(), "c1".getBytes())) {
assertTrue(Bytes.equals(Bytes.toBytes(100), scvf.getComparator().getValue()));
}
}
}
}
}
public void testShouldTakeOnlyTheLowestFilterWhenTwoLesserConditonsAreFound() throws Exception{
ScanFilterEvaluator mapper = new ScanFilterEvaluator();
FilterList masterFilter = new FilterList(Operator.MUST_PASS_ALL);
// create the filter
FilterList filter = new FilterList(Operator.MUST_PASS_ALL);
IndexedSingleColumnValueFilter iscvf1 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c1".getBytes(), CompareOp.LESS, Bytes.toBytes(10));
IndexedSingleColumnValueFilter iscvf2 = new IndexedSingleColumnValueFilter("cf1".getBytes(),
"c2".getBytes(), CompareOp.EQUAL, Bytes.toBytes(20));
filter.addFilter(iscvf1);
filter.addFilter(iscvf2);
FilterList filter1 = new FilterList(Operator.MUST_PASS_ALL);
iscvf1 = new IndexedSingleColumnValueFilter("cf1".getBytes(), "c3".getBytes(), CompareOp.EQUAL,
Bytes.toBytes(10));
iscvf2 = new IndexedSingleColumnValueFilter("cf1".getBytes(), "c1".getBytes(), CompareOp.LESS,
Bytes.toBytes(1));
filter1.addFilter(iscvf1);
filter1.addFilter(iscvf2);
masterFilter.addFilter(filter);
masterFilter.addFilter(filter1);
Filter doFiltersRestruct = mapper.doFiltersRestruct(masterFilter);
if (doFiltersRestruct instanceof FilterList) {
FilterList list = ((FilterList) doFiltersRestruct);
assertEquals(3, list.getFilters().size());
List<Filter> filters = list.getFilters();
for (Filter filter2 : filters) {
if (filter2 instanceof SingleColumnValueFilter) {
SingleColumnValueFilter scvf = (SingleColumnValueFilter) filter2;
if (Bytes.equals(scvf.getQualifier(), "c1".getBytes())) {
assertTrue(Bytes.equals(Bytes.toBytes(1), scvf.getComparator().getValue()));
}
}
}
}
}
*/
private IndexSpecification createIndexSpecification(String cf, ValueType type,
int maxValueLength, String[] qualifiers, String name) {
IndexSpecification index = new IndexSpecification(name.getBytes());
for (String qualifier : qualifiers) {
index.addIndexColumn(new HColumnDescriptor(cf), qualifier, type, maxValueLength);
}
return index;
}
}