@Override public void setReversed(boolean reversed) { for (int i = 0, n = filters.size(); i < n; i++) { filters.get(i).setReversed(reversed); } this.reversed = reversed; }
protected RegionScannerImpl instantiateRegionScanner(Scan scan, List<KeyValueScanner> additionalScanners, long nonceGroup, long nonce) throws IOException { if (scan.isReversed()) { if (scan.getFilter() != null) { scan.getFilter().setReversed(true); } return new ReversedRegionScannerImpl(scan, additionalScanners, this); } return new RegionScannerImpl(scan, additionalScanners, this, nonceGroup, nonce); }
@Override protected RegionScannerImpl instantiateRegionScanner(Scan scan, List<KeyValueScanner> additionalScanners, long nonceGroup, long nonce) throws IOException { if (scan.isReversed()) { if (scan.getFilter() != null) { scan.getFilter().setReversed(true); } return new HeartbeatReversedRegionScanner(scan, additionalScanners, this); } return new HeartbeatRegionScanner(scan, additionalScanners, this); } }
@Test public void testReversedFilterListWithMockSeekHintFilter() throws IOException { KeyValue kv1 = new KeyValue(Bytes.toBytes("row1"), Bytes.toBytes("fam"), Bytes.toBytes("a"), 1, Bytes.toBytes("value")); KeyValue kv2 = new KeyValue(Bytes.toBytes("row2"), Bytes.toBytes("fam"), Bytes.toBytes("a"), 1, Bytes.toBytes("value")); KeyValue kv3 = new KeyValue(Bytes.toBytes("row3"), Bytes.toBytes("fam"), Bytes.toBytes("a"), 1, Bytes.toBytes("value")); Filter filter1 = new MockSeekHintFilter(kv1); filter1.setReversed(true); Filter filter2 = new MockSeekHintFilter(kv2); filter2.setReversed(true); Filter filter3 = new MockSeekHintFilter(kv3); filter3.setReversed(true); FilterList filterList = new FilterList(Operator.MUST_PASS_ONE); filterList.setReversed(true); filterList.addFilter(filter1); filterList.addFilter(filter2); filterList.addFilter(filter3); Assert.assertEquals(ReturnCode.SEEK_NEXT_USING_HINT, filterList.filterCell(kv1)); Assert.assertEquals(kv3, filterList.getNextCellHint(kv1)); filterList = new FilterList(Operator.MUST_PASS_ALL); filterList.setReversed(true); filterList.addFilter(filter1); filterList.addFilter(filter2); filterList.addFilter(filter3); Assert.assertEquals(ReturnCode.SEEK_NEXT_USING_HINT, filterList.filterCell(kv1)); Assert.assertEquals(kv1, filterList.getNextCellHint(kv1)); }
@Override public void setReversed(boolean reversed) { for (int i = 0, n = filters.size(); i < n; i++) { filters.get(i).setReversed(reversed); } this.reversed = reversed; }
@Override public void setReversed(boolean reversed) { for (int i = 0, n = filters.size(); i < n; i++) { filters.get(i).setReversed(reversed); } this.reversed = reversed; }
@Override public void setReversed(boolean reversed) { int listize = filters.size(); for (int i = 0; i < listize; i++) { filters.get(i).setReversed(reversed); } this.reversed = reversed; }
public void testNoNextKey() throws Exception { Filter f = createFilter(new int[]{2,2}, 1); assertInclude("00cc", f); assertInclude(new byte[]{-1,-1,20,20}, f); // make sure we end the scan when we cannot increase a fixed length prefix assertSeekAndHint(new byte[]{-1,-1,20,20}, f, new byte[]{-1,-1}, true); assertSeekAndHint(new byte[]{-1,-1,20,20}, f, new byte[]{-1,-1}, true); f = createFilter(new int[]{2,2}, 1); f.setReversed(true); assertInclude(new byte[]{0,0,1,1}, f); assertSeekAndHint(new byte[]{0,0,1,1}, f, new byte[]{0,0}, false); assertSeekAndHint(new byte[]{0,0,1,1}, f, new byte[]{0,0}, false); } }
public void testMultiVariableWidth() throws Exception { Filter f = createFilter(new int[]{-5,-4}, 1); assertInclude("00000\00aaaa", f); assertInclude("00001\00aaaa", f); assertSeekAndHint("00001\00aaaa", f, "00001\01"); assertInclude("00003\00aaaa", f); assertInclude("00004\00aaaa", f); assertInclude("00005\00aaaa", f); assertSeekAndHint("00005\00aaaa", f, "00005\01"); f = createFilter(new int[]{-5,-4}, 2); assertInclude("00000\00aaaa", f); assertInclude("00001\00aaaa", f); assertSeekAndHint("00001\00aaaa", f, "00001\00aaaa\01"); assertInclude("00003\00aaaa", f); assertInclude("00004\00aaaa", f); assertInclude("00005\00aaaa", f); assertSeekAndHint("00005\00aaaa", f, "00005\00aaaa\01"); f = createFilter(new int[]{-3,-2}, 1); f.setReversed(true); assertInclude("005\00aa", f); assertInclude("004\00aa", f); assertSeekAndHint(new byte[]{'0','0','4', 0, 'a', 'a'}, f, new byte[] {'0','0','4'}, false); f = createFilter(new int[]{-3,-2}, 2); f.setReversed(true); assertInclude("005\00bb", f); assertInclude("004\00bb", f); assertSeekAndHint(new byte[]{'0','0','4', 0, 'b', 'b'}, f, new byte[]{'0','0','4', 0, 'b', 'b'}, false); }
public void testSingleFixedWidth() throws Exception { Filter f = createFilter(new int[]{3}, 1); assertInclude("000", f); assertInclude("001", f); assertSeekAndHint("001", f, "002"); assertInclude("003", f); assertInclude("004", f); assertInclude("005", f); assertSeekAndHint("005", f, "006"); f = createFilter(new int[]{3}, 1); f.setReversed(true); assertInclude("005", f); assertInclude("004", f); assertSeekAndHint(new byte[]{'0','0','4'}, f, new byte[]{'0','0','4'}, false); assertInclude("003", f); assertInclude("002", f); assertInclude("001", f); assertSeekAndHint(new byte[]{'0','0','1'}, f, new byte[]{'0','0','1'}, false); }
f.setReversed(true); assertInclude("005aa", f); assertInclude("004aa", f); f.setReversed(true); assertInclude("005bb", f); assertInclude("004bb", f);
protected RegionScanner instantiateRegionScanner(Scan scan, List<KeyValueScanner> additionalScanners) throws IOException { if (scan.isReversed()) { if (scan.getFilter() != null) { scan.getFilter().setReversed(true); } return new ReversedRegionScannerImpl(scan, additionalScanners, this); } return new RegionScannerImpl(scan, additionalScanners, this); }
@Override protected RegionScannerImpl instantiateRegionScanner(Scan scan, List<KeyValueScanner> additionalScanners, long nonceGroup, long nonce) throws IOException { if (scan.isReversed()) { if (scan.getFilter() != null) { scan.getFilter().setReversed(true); } return new HeartbeatReversedRegionScanner(scan, additionalScanners, this); } return new HeartbeatRegionScanner(scan, additionalScanners, this); } }
@Test public void testReversedFilterListWithMockSeekHintFilter() throws IOException { KeyValue kv1 = new KeyValue(Bytes.toBytes("row1"), Bytes.toBytes("fam"), Bytes.toBytes("a"), 1, Bytes.toBytes("value")); KeyValue kv2 = new KeyValue(Bytes.toBytes("row2"), Bytes.toBytes("fam"), Bytes.toBytes("a"), 1, Bytes.toBytes("value")); KeyValue kv3 = new KeyValue(Bytes.toBytes("row3"), Bytes.toBytes("fam"), Bytes.toBytes("a"), 1, Bytes.toBytes("value")); Filter filter1 = new MockSeekHintFilter(kv1); filter1.setReversed(true); Filter filter2 = new MockSeekHintFilter(kv2); filter2.setReversed(true); Filter filter3 = new MockSeekHintFilter(kv3); filter3.setReversed(true); FilterList filterList = new FilterList(Operator.MUST_PASS_ONE); filterList.setReversed(true); filterList.addFilter(filter1); filterList.addFilter(filter2); filterList.addFilter(filter3); Assert.assertEquals(ReturnCode.SEEK_NEXT_USING_HINT, filterList.filterCell(kv1)); Assert.assertEquals(kv3, filterList.getNextCellHint(kv1)); filterList = new FilterList(Operator.MUST_PASS_ALL); filterList.setReversed(true); filterList.addFilter(filter1); filterList.addFilter(filter2); filterList.addFilter(filter3); Assert.assertEquals(ReturnCode.SEEK_NEXT_USING_HINT, filterList.filterCell(kv1)); Assert.assertEquals(kv1, filterList.getNextCellHint(kv1)); }