Search in sources :

Example 56 with SingleColumnValueFilter

use of org.apache.hadoop.hbase.filter.SingleColumnValueFilter in project hbase by apache.

the class TestFromClientSide method testFilterWithLongCompartor.

@Test
public void testFilterWithLongCompartor() throws Exception {
    final TableName tableName = name.getTableName();
    try (Table ht = TEST_UTIL.createTable(tableName, FAMILY)) {
        byte[][] ROWS = makeN(ROW, 10);
        byte[][] values = new byte[10][];
        for (int i = 0; i < 10; i++) {
            values[i] = Bytes.toBytes(100L * i);
        }
        for (int i = 0; i < 10; i++) {
            Put put = new Put(ROWS[i]);
            put.setDurability(Durability.SKIP_WAL);
            put.addColumn(FAMILY, QUALIFIER, values[i]);
            ht.put(put);
        }
        Scan scan = new Scan();
        scan.addFamily(FAMILY);
        Filter filter = new SingleColumnValueFilter(FAMILY, QUALIFIER, CompareOperator.GREATER, new LongComparator(500));
        scan.setFilter(filter);
        try (ResultScanner scanner = ht.getScanner(scan)) {
            int expectedIndex = 0;
            for (Result result : scanner) {
                assertEquals(1, result.size());
                assertTrue(Bytes.toLong(result.getValue(FAMILY, QUALIFIER)) > 500);
                expectedIndex++;
            }
            assertEquals(4, expectedIndex);
        }
    }
}
Also used : TableName(org.apache.hadoop.hbase.TableName) SingleColumnValueFilter(org.apache.hadoop.hbase.filter.SingleColumnValueFilter) QualifierFilter(org.apache.hadoop.hbase.filter.QualifierFilter) Filter(org.apache.hadoop.hbase.filter.Filter) KeyOnlyFilter(org.apache.hadoop.hbase.filter.KeyOnlyFilter) SingleColumnValueFilter(org.apache.hadoop.hbase.filter.SingleColumnValueFilter) LongComparator(org.apache.hadoop.hbase.filter.LongComparator) MultiRowMutationEndpoint(org.apache.hadoop.hbase.coprocessor.MultiRowMutationEndpoint) Test(org.junit.Test)

Example 57 with SingleColumnValueFilter

use of org.apache.hadoop.hbase.filter.SingleColumnValueFilter in project hbase by apache.

the class TestCheckAndMutate method testCheckAndMutateBatchWithFilter.

@Test
public void testCheckAndMutateBatchWithFilter() throws Throwable {
    try (Table table = createTable()) {
        table.put(Arrays.asList(new Put(ROWKEY).addColumn(FAMILY, Bytes.toBytes("A"), Bytes.toBytes("a")).addColumn(FAMILY, Bytes.toBytes("B"), Bytes.toBytes("b")).addColumn(FAMILY, Bytes.toBytes("C"), Bytes.toBytes("c")), new Put(ROWKEY2).addColumn(FAMILY, Bytes.toBytes("D"), Bytes.toBytes("d")).addColumn(FAMILY, Bytes.toBytes("E"), Bytes.toBytes("e")).addColumn(FAMILY, Bytes.toBytes("F"), Bytes.toBytes("f"))));
        // Test for Put
        CheckAndMutate checkAndMutate1 = CheckAndMutate.newBuilder(ROWKEY).ifMatches(new FilterList(new SingleColumnValueFilter(FAMILY, Bytes.toBytes("A"), CompareOperator.EQUAL, Bytes.toBytes("a")), new SingleColumnValueFilter(FAMILY, Bytes.toBytes("B"), CompareOperator.EQUAL, Bytes.toBytes("b")))).build(new Put(ROWKEY).addColumn(FAMILY, Bytes.toBytes("C"), Bytes.toBytes("g")));
        CheckAndMutate checkAndMutate2 = CheckAndMutate.newBuilder(ROWKEY2).ifMatches(new FilterList(new SingleColumnValueFilter(FAMILY, Bytes.toBytes("D"), CompareOperator.EQUAL, Bytes.toBytes("a")), new SingleColumnValueFilter(FAMILY, Bytes.toBytes("E"), CompareOperator.EQUAL, Bytes.toBytes("b")))).build(new Put(ROWKEY2).addColumn(FAMILY, Bytes.toBytes("F"), Bytes.toBytes("h")));
        List<CheckAndMutateResult> results = table.checkAndMutate(Arrays.asList(checkAndMutate1, checkAndMutate2));
        assertTrue(results.get(0).isSuccess());
        assertNull(results.get(0).getResult());
        assertFalse(results.get(1).isSuccess());
        assertNull(results.get(1).getResult());
        Result result = table.get(new Get(ROWKEY).addColumn(FAMILY, Bytes.toBytes("C")));
        assertEquals("g", Bytes.toString(result.getValue(FAMILY, Bytes.toBytes("C"))));
        result = table.get(new Get(ROWKEY2).addColumn(FAMILY, Bytes.toBytes("F")));
        assertEquals("f", Bytes.toString(result.getValue(FAMILY, Bytes.toBytes("F"))));
        // Test for Delete
        checkAndMutate1 = CheckAndMutate.newBuilder(ROWKEY).ifMatches(new FilterList(new SingleColumnValueFilter(FAMILY, Bytes.toBytes("A"), CompareOperator.EQUAL, Bytes.toBytes("a")), new SingleColumnValueFilter(FAMILY, Bytes.toBytes("B"), CompareOperator.EQUAL, Bytes.toBytes("b")))).build(new Delete(ROWKEY).addColumns(FAMILY, Bytes.toBytes("C")));
        checkAndMutate2 = CheckAndMutate.newBuilder(ROWKEY2).ifMatches(new FilterList(new SingleColumnValueFilter(FAMILY, Bytes.toBytes("D"), CompareOperator.EQUAL, Bytes.toBytes("a")), new SingleColumnValueFilter(FAMILY, Bytes.toBytes("E"), CompareOperator.EQUAL, Bytes.toBytes("b")))).build(new Delete(ROWKEY2).addColumn(FAMILY, Bytes.toBytes("F")));
        results = table.checkAndMutate(Arrays.asList(checkAndMutate1, checkAndMutate2));
        assertTrue(results.get(0).isSuccess());
        assertNull(results.get(0).getResult());
        assertFalse(results.get(1).isSuccess());
        assertNull(results.get(1).getResult());
        assertFalse(table.exists(new Get(ROWKEY).addColumn(FAMILY, Bytes.toBytes("C"))));
        result = table.get(new Get(ROWKEY2).addColumn(FAMILY, Bytes.toBytes("F")));
        assertEquals("f", Bytes.toString(result.getValue(FAMILY, Bytes.toBytes("F"))));
        // Test for RowMutations
        checkAndMutate1 = CheckAndMutate.newBuilder(ROWKEY).ifMatches(new FilterList(new SingleColumnValueFilter(FAMILY, Bytes.toBytes("A"), CompareOperator.EQUAL, Bytes.toBytes("a")), new SingleColumnValueFilter(FAMILY, Bytes.toBytes("B"), CompareOperator.EQUAL, Bytes.toBytes("b")))).build(new RowMutations(ROWKEY).add((Mutation) new Put(ROWKEY).addColumn(FAMILY, Bytes.toBytes("C"), Bytes.toBytes("c"))).add((Mutation) new Delete(ROWKEY).addColumns(FAMILY, Bytes.toBytes("A"))));
        checkAndMutate2 = CheckAndMutate.newBuilder(ROWKEY2).ifMatches(new FilterList(new SingleColumnValueFilter(FAMILY, Bytes.toBytes("D"), CompareOperator.EQUAL, Bytes.toBytes("a")), new SingleColumnValueFilter(FAMILY, Bytes.toBytes("E"), CompareOperator.EQUAL, Bytes.toBytes("b")))).build(new RowMutations(ROWKEY2).add((Mutation) new Put(ROWKEY2).addColumn(FAMILY, Bytes.toBytes("F"), Bytes.toBytes("g"))).add((Mutation) new Delete(ROWKEY2).addColumns(FAMILY, Bytes.toBytes("D"))));
        results = table.checkAndMutate(Arrays.asList(checkAndMutate1, checkAndMutate2));
        assertTrue(results.get(0).isSuccess());
        assertNull(results.get(0).getResult());
        assertFalse(results.get(1).isSuccess());
        assertNull(results.get(1).getResult());
        result = table.get(new Get(ROWKEY));
        assertNull(result.getValue(FAMILY, Bytes.toBytes("A")));
        assertEquals("c", Bytes.toString(result.getValue(FAMILY, Bytes.toBytes("C"))));
        result = table.get(new Get(ROWKEY2));
        assertEquals("d", Bytes.toString(result.getValue(FAMILY, Bytes.toBytes("D"))));
        assertEquals("f", Bytes.toString(result.getValue(FAMILY, Bytes.toBytes("F"))));
    }
}
Also used : SingleColumnValueFilter(org.apache.hadoop.hbase.filter.SingleColumnValueFilter) FilterList(org.apache.hadoop.hbase.filter.FilterList) Test(org.junit.Test)

Example 58 with SingleColumnValueFilter

use of org.apache.hadoop.hbase.filter.SingleColumnValueFilter in project hbase by apache.

the class TestCheckAndMutate method testCheckAndMutateWithFilterAndTimeRange.

@Test
public void testCheckAndMutateWithFilterAndTimeRange() throws Throwable {
    try (Table table = createTable()) {
        // Put with specifying the timestamp
        table.put(new Put(ROWKEY).addColumn(FAMILY, Bytes.toBytes("A"), 100, Bytes.toBytes("a")));
        // Put with success
        CheckAndMutateResult result = table.checkAndMutate(CheckAndMutate.newBuilder(ROWKEY).ifMatches(new SingleColumnValueFilter(FAMILY, Bytes.toBytes("A"), CompareOperator.EQUAL, Bytes.toBytes("a"))).timeRange(TimeRange.between(0, 101)).build(new Put(ROWKEY).addColumn(FAMILY, Bytes.toBytes("B"), Bytes.toBytes("b"))));
        assertTrue(result.isSuccess());
        assertNull(result.getResult());
        Result r = table.get(new Get(ROWKEY).addColumn(FAMILY, Bytes.toBytes("B")));
        assertEquals("b", Bytes.toString(r.getValue(FAMILY, Bytes.toBytes("B"))));
        // Put with failure
        result = table.checkAndMutate(CheckAndMutate.newBuilder(ROWKEY).ifMatches(new SingleColumnValueFilter(FAMILY, Bytes.toBytes("A"), CompareOperator.EQUAL, Bytes.toBytes("a"))).timeRange(TimeRange.between(0, 100)).build(new Put(ROWKEY).addColumn(FAMILY, Bytes.toBytes("C"), Bytes.toBytes("c"))));
        assertFalse(result.isSuccess());
        assertNull(result.getResult());
        assertFalse(table.exists(new Get(ROWKEY).addColumn(FAMILY, Bytes.toBytes("C"))));
    }
}
Also used : SingleColumnValueFilter(org.apache.hadoop.hbase.filter.SingleColumnValueFilter) Test(org.junit.Test)

Example 59 with SingleColumnValueFilter

use of org.apache.hadoop.hbase.filter.SingleColumnValueFilter in project hbase by apache.

the class TestCheckAndMutate method testCheckAndAppend.

@Test
public void testCheckAndAppend() throws Throwable {
    try (Table table = createTable()) {
        table.put(new Put(ROWKEY).addColumn(FAMILY, Bytes.toBytes("A"), Bytes.toBytes("a")));
        // CheckAndAppend with correct value
        CheckAndMutateResult res = table.checkAndMutate(CheckAndMutate.newBuilder(ROWKEY).ifEquals(FAMILY, Bytes.toBytes("A"), Bytes.toBytes("a")).build(new Append(ROWKEY).addColumn(FAMILY, Bytes.toBytes("B"), Bytes.toBytes("b"))));
        assertTrue(res.isSuccess());
        assertEquals("b", Bytes.toString(res.getResult().getValue(FAMILY, Bytes.toBytes("B"))));
        Result result = table.get(new Get(ROWKEY).addColumn(FAMILY, Bytes.toBytes("B")));
        assertEquals("b", Bytes.toString(result.getValue(FAMILY, Bytes.toBytes("B"))));
        // CheckAndAppend with correct value
        res = table.checkAndMutate(CheckAndMutate.newBuilder(ROWKEY).ifEquals(FAMILY, Bytes.toBytes("A"), Bytes.toBytes("b")).build(new Append(ROWKEY).addColumn(FAMILY, Bytes.toBytes("B"), Bytes.toBytes("b"))));
        assertFalse(res.isSuccess());
        assertNull(res.getResult());
        result = table.get(new Get(ROWKEY).addColumn(FAMILY, Bytes.toBytes("B")));
        assertEquals("b", Bytes.toString(result.getValue(FAMILY, Bytes.toBytes("B"))));
        table.put(new Put(ROWKEY).addColumn(FAMILY, Bytes.toBytes("C"), Bytes.toBytes("c")));
        // CheckAndAppend with a filter and correct value
        res = table.checkAndMutate(CheckAndMutate.newBuilder(ROWKEY).ifMatches(new FilterList(new SingleColumnValueFilter(FAMILY, Bytes.toBytes("A"), CompareOperator.EQUAL, Bytes.toBytes("a")), new SingleColumnValueFilter(FAMILY, Bytes.toBytes("C"), CompareOperator.EQUAL, Bytes.toBytes("c")))).build(new Append(ROWKEY).addColumn(FAMILY, Bytes.toBytes("B"), Bytes.toBytes("bb"))));
        assertTrue(res.isSuccess());
        assertEquals("bbb", Bytes.toString(res.getResult().getValue(FAMILY, Bytes.toBytes("B"))));
        result = table.get(new Get(ROWKEY).addColumn(FAMILY, Bytes.toBytes("B")));
        assertEquals("bbb", Bytes.toString(result.getValue(FAMILY, Bytes.toBytes("B"))));
        // CheckAndAppend with a filter and wrong value
        res = table.checkAndMutate(CheckAndMutate.newBuilder(ROWKEY).ifMatches(new FilterList(new SingleColumnValueFilter(FAMILY, Bytes.toBytes("A"), CompareOperator.EQUAL, Bytes.toBytes("b")), new SingleColumnValueFilter(FAMILY, Bytes.toBytes("C"), CompareOperator.EQUAL, Bytes.toBytes("d")))).build(new Append(ROWKEY).addColumn(FAMILY, Bytes.toBytes("B"), Bytes.toBytes("bb"))));
        assertFalse(res.isSuccess());
        assertNull(res.getResult());
        result = table.get(new Get(ROWKEY).addColumn(FAMILY, Bytes.toBytes("B")));
        assertEquals("bbb", Bytes.toString(result.getValue(FAMILY, Bytes.toBytes("B"))));
    }
}
Also used : SingleColumnValueFilter(org.apache.hadoop.hbase.filter.SingleColumnValueFilter) FilterList(org.apache.hadoop.hbase.filter.FilterList) Test(org.junit.Test)

Example 60 with SingleColumnValueFilter

use of org.apache.hadoop.hbase.filter.SingleColumnValueFilter in project hbase by apache.

the class TestCheckAndMutate method testCheckAndMutateWithMultipleFiltersForOldApi.

@Test
@Deprecated
public void testCheckAndMutateWithMultipleFiltersForOldApi() throws Throwable {
    try (Table table = createTable()) {
        // put one row
        putOneRow(table);
        // get row back and assert the values
        getOneRowAndAssertAllExist(table);
        // Put with success
        boolean ok = table.checkAndMutate(ROWKEY, new FilterList(new SingleColumnValueFilter(FAMILY, Bytes.toBytes("A"), CompareOperator.EQUAL, Bytes.toBytes("a")), new SingleColumnValueFilter(FAMILY, Bytes.toBytes("B"), CompareOperator.EQUAL, Bytes.toBytes("b")))).thenPut(new Put(ROWKEY).addColumn(FAMILY, Bytes.toBytes("D"), Bytes.toBytes("d")));
        assertTrue(ok);
        Result result = table.get(new Get(ROWKEY).addColumn(FAMILY, Bytes.toBytes("D")));
        assertEquals("d", Bytes.toString(result.getValue(FAMILY, Bytes.toBytes("D"))));
        // Put with failure
        ok = table.checkAndMutate(ROWKEY, new FilterList(new SingleColumnValueFilter(FAMILY, Bytes.toBytes("A"), CompareOperator.EQUAL, Bytes.toBytes("a")), new SingleColumnValueFilter(FAMILY, Bytes.toBytes("B"), CompareOperator.EQUAL, Bytes.toBytes("c")))).thenPut(new Put(ROWKEY).addColumn(FAMILY, Bytes.toBytes("E"), Bytes.toBytes("e")));
        assertFalse(ok);
        assertFalse(table.exists(new Get(ROWKEY).addColumn(FAMILY, Bytes.toBytes("E"))));
        // Delete with success
        ok = table.checkAndMutate(ROWKEY, new FilterList(new SingleColumnValueFilter(FAMILY, Bytes.toBytes("A"), CompareOperator.EQUAL, Bytes.toBytes("a")), new SingleColumnValueFilter(FAMILY, Bytes.toBytes("B"), CompareOperator.EQUAL, Bytes.toBytes("b")))).thenDelete(new Delete(ROWKEY).addColumns(FAMILY, Bytes.toBytes("D")));
        assertTrue(ok);
        assertFalse(table.exists(new Get(ROWKEY).addColumn(FAMILY, Bytes.toBytes("D"))));
        // Mutate with success
        ok = table.checkAndMutate(ROWKEY, new FilterList(new SingleColumnValueFilter(FAMILY, Bytes.toBytes("A"), CompareOperator.EQUAL, Bytes.toBytes("a")), new SingleColumnValueFilter(FAMILY, Bytes.toBytes("B"), CompareOperator.EQUAL, Bytes.toBytes("b")))).thenMutate(new RowMutations(ROWKEY).add((Mutation) new Put(ROWKEY).addColumn(FAMILY, Bytes.toBytes("D"), Bytes.toBytes("d"))).add((Mutation) new Delete(ROWKEY).addColumns(FAMILY, Bytes.toBytes("A"))));
        assertTrue(ok);
        result = table.get(new Get(ROWKEY).addColumn(FAMILY, Bytes.toBytes("D")));
        assertEquals("d", Bytes.toString(result.getValue(FAMILY, Bytes.toBytes("D"))));
        assertFalse(table.exists(new Get(ROWKEY).addColumn(FAMILY, Bytes.toBytes("A"))));
    }
}
Also used : SingleColumnValueFilter(org.apache.hadoop.hbase.filter.SingleColumnValueFilter) FilterList(org.apache.hadoop.hbase.filter.FilterList) Test(org.junit.Test)

Aggregations

SingleColumnValueFilter (org.apache.hadoop.hbase.filter.SingleColumnValueFilter)71 Test (org.junit.Test)39 FilterList (org.apache.hadoop.hbase.filter.FilterList)28 BinaryComparator (org.apache.hadoop.hbase.filter.BinaryComparator)16 Scan (org.apache.hadoop.hbase.client.Scan)15 Put (org.apache.hadoop.hbase.client.Put)13 Result (org.apache.hadoop.hbase.client.Result)13 Filter (org.apache.hadoop.hbase.filter.Filter)12 Delete (org.apache.hadoop.hbase.client.Delete)8 ResultScanner (org.apache.hadoop.hbase.client.ResultScanner)8 RowFilter (org.apache.hadoop.hbase.filter.RowFilter)8 TableName (org.apache.hadoop.hbase.TableName)7 Table (org.apache.hadoop.hbase.client.Table)7 BitComparator (org.apache.hadoop.hbase.filter.BitComparator)7 ArrayList (java.util.ArrayList)6 CheckAndMutateResult (org.apache.hadoop.hbase.client.CheckAndMutateResult)6 Get (org.apache.hadoop.hbase.client.Get)6 Mutation (org.apache.hadoop.hbase.client.Mutation)6 ByteArrayComparable (org.apache.hadoop.hbase.filter.ByteArrayComparable)6 CompareOp (org.apache.hadoop.hbase.filter.CompareFilter.CompareOp)6