Author: larsh
Date: Fri Oct 18 19:37:37 2013
New Revision: 1533605
URL: http://svn.apache.org/r1533605
Log:
HBASE-9747 added test (Aditya Kishore)
Modified:
hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/filter/TestFilter.java
Modified:
hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/filter/TestFilter.java
URL:
http://svn.apache.org/viewvc/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/filter/TestFilter.java?rev=1533605&r1=1533604&r2=1533605&view=diff
==============================================================================
---
hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/filter/TestFilter.java
(original)
+++
hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/filter/TestFilter.java
Fri Oct 18 19:37:37 2013
@@ -28,10 +28,12 @@ import java.util.Arrays;
import java.util.List;
import junit.framework.Assert;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.Delete;
+import org.apache.hadoop.hbase.client.Durability;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
@@ -1225,6 +1227,52 @@ public class TestFilter extends HBaseTes
verifyScanFull(s, kvs);
}
+ // HBASE-9747
+ public void testFilterListWithPrefixFilter() throws IOException {
+ byte[] family = Bytes.toBytes("f1");
+ byte[] qualifier = Bytes.toBytes("q1");
+ HTableDescriptor htd = new HTableDescriptor(getName());
+ htd.addFamily(new HColumnDescriptor(family));
+ HRegionInfo info = new HRegionInfo(htd.getName(), null, null, false);
+ HRegion testRegion = HRegion.createHRegion(info, testDir, conf, htd);
+
+ for(int i=0; i<5; i++) {
+ Put p = new Put(Bytes.toBytes((char)('a'+i) + "row"));
+ p.setDurability(Durability.SKIP_WAL);
+ p.add(family, qualifier, Bytes.toBytes(String.valueOf(111+i)));
+ testRegion.put(p);
+ }
+ testRegion.flushcache();
+
+ // rows starting with "b"
+ PrefixFilter pf = new PrefixFilter(new byte[] {'b'}) ;
+ // rows with value of column 'q1' set to '113'
+ SingleColumnValueFilter scvf = new SingleColumnValueFilter(
+ family, qualifier, CompareOp.EQUAL, Bytes.toBytes("113"));
+ // combine these two with OR in a FilterList
+ FilterList filterList = new FilterList(Operator.MUST_PASS_ONE, pf, scvf);
+
+ Scan s1 = new Scan();
+ s1.setFilter(filterList);
+ InternalScanner scanner = testRegion.getScanner(s1);
+ List<KeyValue> results = new ArrayList<KeyValue>();
+ int resultCount = 0;
+ while(scanner.next(results)) {
+ resultCount++;
+ byte[] row = results.get(0).getRow();
+ LOG.debug("Found row: " + Bytes.toStringBinary(row));
+ Assert.assertTrue(Bytes.equals(row, Bytes.toBytes("brow"))
+ || Bytes.equals(row, Bytes.toBytes("crow")));
+ results.clear();
+ }
+ Assert.assertEquals(2, resultCount);
+ scanner.close();
+
+ HLog hlog = testRegion.getLog();
+ testRegion.close();
+ hlog.closeAndDelete();
+ }
+
public void testNestedFilterListWithSCVF() throws IOException {
byte[] columnStatus = Bytes.toBytes("S");
HTableDescriptor htd = new HTableDescriptor(getName());