public static Filter createFilterFromArguments(ArrayList<byte []> filterArguments) { @SuppressWarnings("rawtypes") // for arguments ArrayList arguments = CompareFilter.extractArguments(filterArguments); CompareOperator compareOp = (CompareOperator)arguments.get(0); ByteArrayComparable comparator = (ByteArrayComparable)arguments.get(1); return new ValueFilter(compareOp, comparator); }
@Test public void testValueFilter() throws IOException { String filterString = "ValueFilter(!=, 'substring:pre')"; ValueFilter valueFilter = doTestFilter(filterString, ValueFilter.class); assertEquals(CompareOperator.NOT_EQUAL, valueFilter.getCompareOperator()); assertTrue(valueFilter.getComparator() instanceof SubstringComparator); SubstringComparator substringComparator = (SubstringComparator) valueFilter.getComparator(); assertEquals("pre", new String(substringComparator.getValue(), StandardCharsets.UTF_8)); }
@Test public void testValueFilter() throws Exception { ValueFilter valueFilter = new ValueFilter(CompareOperator.NO_OP, new BinaryComparator(Bytes.toBytes("testValueOne"))); assertTrue(valueFilter.areSerializedFieldsEqual( ProtobufUtil.toFilter(ProtobufUtil.toFilter(valueFilter)))); }
@Override public ReturnCode filterCell(final Cell c) { if (compareValue(getCompareOperator(), this.comparator, c)) { return ReturnCode.SKIP; } return ReturnCode.INCLUDE; }
@Override public ReturnCode filterKeyValue(KeyValue v) { if (doCompare(this.compareOp, this.comparator, v.getBuffer(), v.getValueOffset(), v.getValueLength())) { return ReturnCode.SKIP; } return ReturnCode.INCLUDE; }
@Override public boolean equals(Object obj) { return obj instanceof Filter && areSerializedFieldsEqual((Filter) obj); }
@Override public ReturnCode filterCell(final Cell c) { if (compareValue(getCompareOperator(), this.comparator, c)) { return ReturnCode.SKIP; } return ReturnCode.INCLUDE; }
@Override public ReturnCode filterKeyValue(Cell v) { if (doCompare(this.compareOp, this.comparator, v.getValueArray(), v.getValueOffset(), v.getValueLength())) { return ReturnCode.SKIP; } return ReturnCode.INCLUDE; }
break; case ValueFilter: filter = new ValueFilter(CompareOperator.valueOf(op), comparator.build()); break; case WhileMatchFilter:
@Test public void testValueFilter() throws Exception { ValueFilter valueFilter = new ValueFilter(CompareOperator.NO_OP, new BinaryComparator(Bytes.toBytes("testValueOne"))); assertTrue(valueFilter.areSerializedFieldsEqual( ProtobufUtil.toFilter(ProtobufUtil.toFilter(valueFilter)))); }
@Test public void testSkipFilter() throws IOException { String filterString = "SKIP ValueFilter( =, 'binary:0')"; SkipFilter skipFilter = doTestFilter(filterString, SkipFilter.class); assertTrue(skipFilter.getFilter() instanceof ValueFilter); ValueFilter valueFilter = (ValueFilter) skipFilter.getFilter(); assertEquals(CompareOperator.EQUAL, valueFilter.getCompareOperator()); assertTrue(valueFilter.getComparator() instanceof BinaryComparator); BinaryComparator binaryComparator = (BinaryComparator) valueFilter.getComparator(); assertEquals("0", new String(binaryComparator.getValue(), StandardCharsets.UTF_8)); }
@Override public ReturnCode filterCell(final Cell c) { if (compareValue(getCompareOperator(), this.comparator, c)) { return ReturnCode.SKIP; } return ReturnCode.INCLUDE; }
@Test public void testFilterList() throws IOException { // Test getting a single row, single key using Row, Qualifier, and Value // regular expression and substring filters // Use must pass all List<Filter> filters = new ArrayList<>(); filters.add(new RowFilter(CompareOperator.EQUAL, new RegexStringComparator(".+-2"))); filters.add(new QualifierFilter(CompareOperator.EQUAL, new RegexStringComparator(".+-2"))); filters.add(new ValueFilter(CompareOperator.EQUAL, new SubstringComparator("One"))); Filter f = new FilterList(Operator.MUST_PASS_ALL, filters); Scan s = new Scan(); s.addFamily(FAMILIES[0]); s.setFilter(f); KeyValue [] kvs = { new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[2], VALUES[0]) }; verifyScanFull(s, kvs); // Test getting everything with a MUST_PASS_ONE filter including row, qf, val // regular expression and substring filters filters.clear(); filters.add(new RowFilter(CompareOperator.EQUAL, new RegexStringComparator(".+Two.+"))); filters.add(new QualifierFilter(CompareOperator.EQUAL, new RegexStringComparator(".+-2"))); filters.add(new ValueFilter(CompareOperator.EQUAL, new SubstringComparator("One"))); f = new FilterList(Operator.MUST_PASS_ONE, filters); s = new Scan(); s.setFilter(f); verifyScanNoEarlyOut(s, this.numRows, this.colsPerRow); }
@Test public void testValueFilter() throws IOException { String filterString = "ValueFilter(!=, 'substring:pre')"; ValueFilter valueFilter = doTestFilter(filterString, ValueFilter.class); assertEquals(CompareOperator.NOT_EQUAL, valueFilter.getCompareOperator()); assertTrue(valueFilter.getComparator() instanceof SubstringComparator); SubstringComparator substringComparator = (SubstringComparator) valueFilter.getComparator(); assertEquals("pre", new String(substringComparator.getValue(), StandardCharsets.UTF_8)); }
filters.add(new QualifierFilter(CompareOperator.EQUAL, new RegexStringComparator(".+-2"))); filters.add(new ValueFilter(CompareOperator.EQUAL, new SubstringComparator("One"))); Filter f = new FilterList(Operator.MUST_PASS_ALL, filters); filters.add(new QualifierFilter(CompareOperator.EQUAL, new RegexStringComparator(".+-2"))); filters.add(new ValueFilter(CompareOperator.EQUAL, new SubstringComparator("One"))); f = new FilterList(Operator.MUST_PASS_ONE, filters);
@Test public void testSkipFilter() throws IOException { String filterString = "SKIP ValueFilter( =, 'binary:0')"; SkipFilter skipFilter = doTestFilter(filterString, SkipFilter.class); assertTrue(skipFilter.getFilter() instanceof ValueFilter); ValueFilter valueFilter = (ValueFilter) skipFilter.getFilter(); assertEquals(CompareOperator.EQUAL, valueFilter.getCompareOperator()); assertTrue(valueFilter.getComparator() instanceof BinaryComparator); BinaryComparator binaryComparator = (BinaryComparator) valueFilter.getComparator(); assertEquals("0", new String(binaryComparator.getValue(), StandardCharsets.UTF_8)); }
Filter f = new ValueFilter(CompareOperator.EQUAL, new BinaryComparator(Bytes.toBytes("testValueOne"))); Scan s = new Scan(); f = new ValueFilter(CompareOperator.EQUAL, new BinaryComparator(Bytes.toBytes("testValueTwo"))); s = new Scan(); f = new ValueFilter(CompareOperator.EQUAL, new RegexStringComparator("testValue((One)|(Two))")); s = new Scan(); f = new ValueFilter(CompareOperator.LESS, new BinaryComparator(Bytes.toBytes("testValueTwo"))); s = new Scan(); f = new ValueFilter(CompareOperator.LESS_OR_EQUAL, new BinaryComparator(Bytes.toBytes("testValueTwo"))); s = new Scan(); f = new ValueFilter(CompareOperator.LESS_OR_EQUAL, new BinaryComparator(Bytes.toBytes("testValueOne"))); s = new Scan(); f = new ValueFilter(CompareOperator.NOT_EQUAL, new BinaryComparator(Bytes.toBytes("testValueOne"))); s = new Scan(); f = new ValueFilter(CompareOperator.GREATER_OR_EQUAL,
Filter f = new ValueFilter(CompareOperator.EQUAL, new BinaryComparator(Bytes.toBytes("testValueOne"))); Scan s = new Scan(); f = new ValueFilter(CompareOperator.EQUAL, new BinaryComparator(Bytes.toBytes("testValueTwo"))); s = new Scan(); f = new ValueFilter(CompareOperator.EQUAL, new RegexStringComparator("testValue((One)|(Two))")); s = new Scan(); f = new ValueFilter(CompareOperator.LESS, new BinaryComparator(Bytes.toBytes("testValueTwo"))); s = new Scan(); f = new ValueFilter(CompareOperator.LESS_OR_EQUAL, new BinaryComparator(Bytes.toBytes("testValueTwo"))); s = new Scan(); f = new ValueFilter(CompareOperator.LESS_OR_EQUAL, new BinaryComparator(Bytes.toBytes("testValueOne"))); s = new Scan(); f = new ValueFilter(CompareOperator.NOT_EQUAL, new BinaryComparator(Bytes.toBytes("testValueOne"))); s = new Scan(); f = new ValueFilter(CompareOperator.GREATER_OR_EQUAL,
/** * @param pbBytes A pb serialized {@link ValueFilter} instance * @return An instance of {@link ValueFilter} made from <code>bytes</code> * @throws DeserializationException * @see #toByteArray */ public static ValueFilter parseFrom(final byte [] pbBytes) throws DeserializationException { FilterProtos.ValueFilter proto; try { proto = FilterProtos.ValueFilter.parseFrom(pbBytes); } catch (InvalidProtocolBufferException e) { throw new DeserializationException(e); } final CompareOperator valueCompareOp = CompareOperator.valueOf(proto.getCompareFilter().getCompareOp().name()); ByteArrayComparable valueComparator = null; try { if (proto.getCompareFilter().hasComparator()) { valueComparator = ProtobufUtil.toComparator(proto.getCompareFilter().getComparator()); } } catch (IOException ioe) { throw new DeserializationException(ioe); } return new ValueFilter(valueCompareOp,valueComparator); }
get.setFilter(new ValueFilter(CompareOp.EQUAL, new SubstringComparator("value"))); res = region.get(get);