protected void findTop() throws IOException { SortedKeyValueIterator<Key,Value> src = getSource(); // advance could be null if we've just been seeked advance = null; while (src.hasTop() && !advancedPastSeek) { if (src.getTopKey().isDeleted()) { // as per. o.a.a.core.iterators.Filter, deleted keys always pass through the filter. advance = AdvanceResult.NEXT; return; } FilterResult f = filter(src.getTopKey(), src.getTopValue()); if (log.isTraceEnabled()) { log.trace("Filtered: {} result == {} hint == {}", src.getTopKey(), f, f.advance == AdvanceResult.USE_HINT ? getNextKeyHint(src.getTopKey(), src.getTopValue()) : " (none)"); } if (f.accept != negate) { // advance will be processed when next is called advance = f.advance; break; } else { advanceSource(src, f.advance); } } }
case USE_HINT: Value topVal = src.getTopValue(); Key hintKey = getNextKeyHint(topKey, topVal); if (hintKey != null && hintKey.compareTo(topKey) > 0) { advRange = new Range(hintKey, null);
protected void findTop() throws IOException { SortedKeyValueIterator<Key,Value> src = getSource(); // advance could be null if we've just been seeked advance = null; while (src.hasTop() && !advancedPastSeek) { if (src.getTopKey().isDeleted()) { // as per. o.a.a.core.iterators.Filter, deleted keys always pass through the filter. advance = AdvanceResult.NEXT; return; } FilterResult f = filter(src.getTopKey(), src.getTopValue()); if (log.isTraceEnabled()) { log.trace("Filtered: {} result == {} hint == {}", src.getTopKey(), f, f.advance == AdvanceResult.USE_HINT ? getNextKeyHint(src.getTopKey(), src.getTopValue()) : " (none)"); } if (f.accept != negate) { // advance will be processed when next is called advance = f.advance; break; } else { advanceSource(src, f.advance); } } }
case USE_HINT: Value topVal = src.getTopValue(); Key hintKey = getNextKeyHint(topKey, topVal); if (hintKey != null && hintKey.compareTo(topKey) > 0) { advRange = new Range(hintKey, null);