Skip to content

Commit 65f8cdd

Browse files
miyuan-ljrstuBirdFly
authored andcommitted
random row filter (#62)
1 parent dee9af4 commit 65f8cdd

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed

src/main/java/com/alipay/oceanbase/hbase/filter/HBaseFilterUtils.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ public static String toParseableString(Filter filter) {
4343
return toParseableString((PrefixFilter) filter);
4444
} else if (filter instanceof FilterList) {
4545
return toParseableString((FilterList) filter);
46+
} else if (filter instanceof RandomRowFilter) {
47+
return toParseableString((RandomRowFilter) filter);
4648
} else if (filter instanceof ColumnPaginationFilter) {
4749
return toParseableString((ColumnPaginationFilter) filter);
4850
} else if (filter instanceof ColumnPrefixFilter) {
@@ -125,6 +127,10 @@ private static String toParseableString(PageFilter filter) {
125127
return filter.getClass().getSimpleName() + '(' + filter.getPageSize() + ')';
126128
}
127129

130+
private static String toParseableString(RandomRowFilter filter) {
131+
return filter.getClass().getSimpleName() + "(" + Bytes.toInt(Bytes.toBytes(filter.getChance())) + ")";
132+
}
133+
128134
private static String toParseableString(ColumnPaginationFilter filter) {
129135
if (filter.getColumnOffset() != null) {
130136
return filter.getClass().getSimpleName() + '(' + filter.getLimit() + ",'"

src/test/java/com/alipay/oceanbase/hbase/HTableTestBase.java

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -751,6 +751,65 @@ public void testFilter() throws Exception {
751751
}
752752
Assert.assertEquals(res_count, 1);
753753
scanner.close();
754+
755+
Put putKey3Column3Value1 = new Put(toBytes("getKey3"));
756+
putKey3Column3Value1.add(toBytes(family), toBytes(column1), toBytes(value1));
757+
tryPut(hTable, putKey3Column3Value1);
758+
Put putKey4Column3Value1 = new Put(toBytes("getKey4"));
759+
putKey4Column3Value1.add(toBytes(family), toBytes(column1), toBytes(value1));
760+
tryPut(hTable, putKey4Column3Value1);
761+
762+
scan = new Scan();
763+
scan.addFamily(family.getBytes());
764+
scan.setStartRow("getKey1".getBytes());
765+
scan.setStopRow("getKey5".getBytes());
766+
scan.setMaxVersions(10);
767+
scanner = hTable.getScanner(scan);
768+
769+
res_count = 0;
770+
for (Result result : scanner) {
771+
for (KeyValue keyValue : result.raw()) {
772+
res_count += 1;
773+
}
774+
}
775+
Assert.assertEquals(res_count, 30);
776+
scanner.close();
777+
778+
scan = new Scan();
779+
scan.addFamily(family.getBytes());
780+
scan.setStartRow("getKey1".getBytes());
781+
scan.setStopRow("getKey5".getBytes());
782+
scan.setMaxVersions(10);
783+
RandomRowFilter rf = new RandomRowFilter(-1);
784+
scan.setFilter(rf);
785+
scanner = hTable.getScanner(scan);
786+
787+
res_count = 0;
788+
for (Result result : scanner) {
789+
for (KeyValue keyValue : result.raw()) {
790+
res_count += 1;
791+
}
792+
}
793+
Assert.assertEquals(res_count, 0);
794+
scanner.close();
795+
796+
scan = new Scan();
797+
scan.addFamily(family.getBytes());
798+
scan.setStartRow("getKey1".getBytes());
799+
scan.setStopRow("getKey5".getBytes());
800+
scan.setMaxVersions(10);
801+
rf = new RandomRowFilter(2);
802+
scan.setFilter(rf);
803+
scanner = hTable.getScanner(scan);
804+
805+
res_count = 0;
806+
for (Result result : scanner) {
807+
for (KeyValue keyValue : result.raw()) {
808+
res_count += 1;
809+
}
810+
}
811+
Assert.assertEquals(res_count, 30);
812+
scanner.close();
754813
}
755814

756815
@Test

0 commit comments

Comments
 (0)