You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2015/08/11 18:40:19 UTC
hbase git commit: HBASE-14206 MultiRowRangeFilter returns records
whose rowKeys are out of allowed ranges (Anton Nazaruk)
Repository: hbase
Updated Branches:
refs/heads/master d49b1f60f -> a2dbe31b2
HBASE-14206 MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges (Anton Nazaruk)
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/a2dbe31b
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/a2dbe31b
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/a2dbe31b
Branch: refs/heads/master
Commit: a2dbe31b269a9813971ffa76af400d303cb85d63
Parents: d49b1f6
Author: tedyu <yu...@gmail.com>
Authored: Tue Aug 11 09:40:13 2015 -0700
Committer: tedyu <yu...@gmail.com>
Committed: Tue Aug 11 09:40:13 2015 -0700
----------------------------------------------------------------------
.../hbase/filter/MultiRowRangeFilter.java | 3 +++
.../hbase/filter/TestMultiRowRangeFilter.java | 23 ++++++++++++++++++++
2 files changed, 26 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/a2dbe31b/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/MultiRowRangeFilter.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/MultiRowRangeFilter.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/MultiRowRangeFilter.java
index e7d8c38..e5ce27c 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/MultiRowRangeFilter.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/MultiRowRangeFilter.java
@@ -237,6 +237,9 @@ public class MultiRowRangeFilter extends FilterBase {
if (insertionPosition == 0 && !rangeList.get(insertionPosition).contains(rowKey)) {
return ROW_BEFORE_FIRST_RANGE;
}
+ if (!initialized) {
+ initialized = true;
+ }
return insertionPosition;
}
// the row key equals one of the start keys, and the the range exclude the start key
http://git-wip-us.apache.org/repos/asf/hbase/blob/a2dbe31b/hbase-server/src/test/java/org/apache/hadoop/hbase/filter/TestMultiRowRangeFilter.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/filter/TestMultiRowRangeFilter.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/filter/TestMultiRowRangeFilter.java
index a8b8b1d..3c5fe27 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/filter/TestMultiRowRangeFilter.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/filter/TestMultiRowRangeFilter.java
@@ -72,6 +72,29 @@ public class TestMultiRowRangeFilter {
}
@Test
+ public void testRanges() throws IOException {
+ byte[] key1Start = new byte[] {-3};
+ byte[] key1End = new byte[] {-2};
+
+ byte[] key2Start = new byte[] {5};
+ byte[] key2End = new byte[] {6};
+
+ byte[] badKey = new byte[] {-10};
+
+ MultiRowRangeFilter filter = new MultiRowRangeFilter(Arrays.asList(
+ new MultiRowRangeFilter.RowRange(key1Start, true, key1End, false),
+ new MultiRowRangeFilter.RowRange(key2Start, true, key2End, false)
+ ));
+ filter.filterRowKey(KeyValueUtil.createFirstOnRow(badKey));
+ /*
+ * FAILS -- includes BAD key!
+ * Expected :SEEK_NEXT_USING_HINT
+ * Actual :INCLUDE
+ * */
+ assertEquals(Filter.ReturnCode.SEEK_NEXT_USING_HINT, filter.filterKeyValue(null));
+ }
+
+ @Test
public void testOutOfOrderScannerNextException() throws Exception {
MultiRowRangeFilter filter = new MultiRowRangeFilter(Arrays.asList(
new MultiRowRangeFilter.RowRange(Bytes.toBytes("b"), true, Bytes.toBytes("c"), true),