Skip to content

Commit 8c082ed

Browse files
authored
增加columnPaginationFilter功能 (#33)
1 parent 28dc71b commit 8c082ed

File tree

3 files changed

+45
-2
lines changed

3 files changed

+45
-2
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
@@ -40,6 +40,8 @@ public static String toParseableString(Filter filter) {
4040
return toParseableString((PrefixFilter) filter);
4141
} else if (filter instanceof FilterList) {
4242
return toParseableString((FilterList) filter);
43+
} else if (filter instanceof ColumnPaginationFilter) {
44+
return toParseableString((ColumnPaginationFilter) filter);
4345
} else if (filter instanceof SkipFilter) {
4446
return toParseableString((SkipFilter) filter);
4547
} else if (filter instanceof WhileMatchFilter) {
@@ -112,6 +114,10 @@ private static String toParseableString(PageFilter filter) {
112114
return filter.getClass().getSimpleName() + '(' + filter.getPageSize() + ')';
113115
}
114116

117+
private static String toParseableString(ColumnPaginationFilter filter) {
118+
return filter.getClass().getSimpleName() + '(' + filter.getLimit() + ',' + filter.getOffset() + ')';
119+
}
120+
115121
private static String toParseableString(ColumnCountGetFilter filter) {
116122
return filter.getClass().getSimpleName() + '(' + filter.getLimit() + ')';
117123
}

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,22 @@ public void testGetFilter() throws Exception {
601601
tryPut(hTable, putKey2Column2Value1);
602602
tryPut(hTable, putKey2Column2Value2);
603603

604+
605+
// show table (time maybe different)
606+
//+---------+---------+----------------+--------+
607+
//| K | Q | T | V |
608+
//+---------+---------+----------------+--------+
609+
//| getKey1 | column1 | -1709714109660 | value1 |
610+
//| getKey1 | column1 | -1709714109661 | value2 |
611+
//| getKey1 | column1 | -1709714109662 | value1 |
612+
//| getKey1 | column2 | -1709714109663 | value1 |
613+
//| getKey1 | column2 | -1709714109664 | value2 |
614+
//| getKey1 | column2 | -1709714109665 | value1 |
615+
//| getKey1 | column2 | -1709714109666 | value2 |
616+
//| getKey2 | column2 | -1709714109667 | value1 |
617+
//| getKey2 | column2 | -1709714109668 | value2 |
618+
//+---------+---------+----------------+--------+
619+
604620
FilterList filterList = new FilterList();
605621
filterList.addFilter(new ColumnCountGetFilter(1));
606622
get = new Get(toBytes(key1));
@@ -697,6 +713,18 @@ public void testGetFilter() throws Exception {
697713
r = hTable.get(get);
698714
Assert.assertEquals(7, r.raw().length);
699715

716+
// test empty filter in FilterList
717+
filterList = new FilterList();
718+
emptyFilterList = new FilterList();
719+
filterList.addFilter(emptyFilterList);
720+
filterList.addFilter(new ColumnPaginationFilter(3,1));
721+
get = new Get(toBytes(key1));
722+
get.setMaxVersions(10);
723+
get.addFamily(toBytes(family));
724+
get.setFilter(filterList);
725+
r = hTable.get(get);
726+
Assert.assertEquals(1, r.raw().length);
727+
700728
// test empty filter in FilterList
701729
filterList = new FilterList();
702730
emptyFilterList = new FilterList();

src/test/java/com/alipay/oceanbase/hbase/filter/HBaseFilterUtilsTest.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,12 @@ public void testPageFilter() {
124124
Assert.assertEquals("PageFilter(128)", HBaseFilterUtils.toParseableString(filter));
125125
}
126126

127+
@Test
128+
public void testColumnPaginationFilter() {
129+
ColumnPaginationFilter filter = new ColumnPaginationFilter(2,2);
130+
Assert.assertEquals("ColumnPaginationFilter(2,2)", HBaseFilterUtils.toParseableString(filter));
131+
}
132+
127133
@Test
128134
public void testColumnCountGetFilter() {
129135
ColumnCountGetFilter filter = new ColumnCountGetFilter(513);
@@ -162,24 +168,27 @@ public void testFilterList() {
162168
QualifierFilter qualifierFilter = new QualifierFilter(CompareFilter.CompareOp.GREATER,
163169
new BinaryPrefixComparator("whileMatchFilter".getBytes()));
164170
SkipFilter skipFilter = new SkipFilter(new PageFilter(128));
171+
ColumnPaginationFilter columnPaginationFilter = new ColumnPaginationFilter(2,2);
165172

166173
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
167174
filterList.addFilter(rowFilter);
168175
filterList.addFilter(qualifierFilter);
169176
filterList.addFilter(skipFilter);
177+
filterList.addFilter(columnPaginationFilter);
170178

171179
Assert
172180
.assertEquals(
173181
"(RowFilter(=,'binary:testSkipFilter') "
174-
+ "AND QualifierFilter(>,'binaryprefix:whileMatchFilter') AND (SKIP PageFilter(128)))",
182+
+ "AND QualifierFilter(>,'binaryprefix:whileMatchFilter') AND (SKIP PageFilter(128)) AND ColumnPaginationFilter(2,2))",
175183
HBaseFilterUtils.toParseableString(filterList));
176184

177185
filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE);
178186
filterList.addFilter(rowFilter);
179187
filterList.addFilter(qualifierFilter);
188+
filterList.addFilter(columnPaginationFilter);
180189

181190
Assert.assertEquals("(RowFilter(=,'binary:testSkipFilter') "
182-
+ "OR QualifierFilter(>,'binaryprefix:whileMatchFilter'))",
191+
+ "OR QualifierFilter(>,'binaryprefix:whileMatchFilter') OR ColumnPaginationFilter(2,2))",
183192
HBaseFilterUtils.toParseableString(filterList));
184193
}
185194
}

0 commit comments

Comments
 (0)