assertThat(iter.hasNext(), is(false)); iter = buffer.getAll("value1"); assertThat(iter.next(), is("first")); assertThat(iter.next(), is("second"));
@SuppressWarnings( "unchecked" ) @Test public void shouldCreateSortBufferOnHeap() { TypeFactory<String> stringType = types.getStringFactory(); BTreeKeySerializer<String> strKeySerializer = (BTreeKeySerializer<String>)mgr.bTreeKeySerializerFor(stringType, false); Serializer<String> strSerializer = (Serializer<String>)mgr.serializerFor(stringType); try (SortingBuffer<String, String> buffer = mgr.createSortingBuffer(strKeySerializer, strSerializer).useHeap(true) .keepSize(true).make()) { buffer.put("value1", "first"); buffer.put("value2", "first"); buffer.put("value3", "first"); buffer.put("value1", "second"); buffer.put("value3", "second"); buffer.put("value1", "third"); assertThat(buffer.size(), is(3L)); Iterator<String> iter = buffer.ascending(); assertThat(iter.next(), is("third")); assertThat(iter.next(), is("first")); assertThat(iter.next(), is("second")); assertThat(iter.hasNext(), is(false)); iter = buffer.descending(); assertThat(iter.next(), is("second")); assertThat(iter.next(), is("first")); assertThat(iter.next(), is("third")); assertThat(iter.hasNext(), is(false)); iter = buffer.getAll("value1"); assertThat(iter.next(), is("third")); assertThat(iter.hasNext(), is(false)); } }
@SuppressWarnings( "unchecked" ) @Test public void shouldCreateSortBufferOffHeap() { TypeFactory<String> stringType = types.getStringFactory(); BTreeKeySerializer<String> strKeySerializer = (BTreeKeySerializer<String>)mgr.bTreeKeySerializerFor(stringType, false); Serializer<String> strSerializer = (Serializer<String>)mgr.serializerFor(stringType); try (SortingBuffer<String, String> buffer = mgr.createSortingBuffer(strKeySerializer, strSerializer).useHeap(false) .keepSize(true).make()) { buffer.put("value1", "first"); buffer.put("value2", "first"); buffer.put("value3", "first"); buffer.put("value1", "second"); buffer.put("value3", "second"); buffer.put("value1", "third"); assertThat(buffer.size(), is(3L)); Iterator<String> iter = buffer.ascending(); assertThat(iter.next(), is("third")); assertThat(iter.next(), is("first")); assertThat(iter.next(), is("second")); assertThat(iter.hasNext(), is(false)); iter = buffer.descending(); assertThat(iter.next(), is("second")); assertThat(iter.next(), is("first")); assertThat(iter.next(), is("third")); assertThat(iter.hasNext(), is(false)); iter = buffer.getAll("value1"); assertThat(iter.next(), is("third")); assertThat(iter.hasNext(), is(false)); } }
protected Iterator<BufferedRow> getRightRowsFor( Object leftValue ) { return buffer.getAll(leftValue); }
protected Iterator<BufferedRows.BufferedRow> matchingRightRows(Object keyInLeft) { return buffer.getAll(keyInLeft); }
protected Iterator<BufferedRows.BufferedRow> matchingRightRows(Object keyInLeft) { return buffer.getAll(keyInLeft); }
protected Iterator<BufferedRow> getRightRowsFor( Object leftValue ) { return buffer.getAll(leftValue); }
@Override protected Iterator<BufferedRow> getRightRowsFor( Object leftValue ) { if (leftValue == null) { // Nothing on the right ever matches a NULL on the left ... return null; } Range<Object> range = HashJoinSequence.this.rangeProducer.getRange(leftValue); if (range == null) return null; return buffer.getAll(range.lowerBound(), range.isLowerBoundIncluded(), range.upperBound(), range.isUpperBoundIncluded()); } }
@Override protected Iterator<BufferedRow> getRightRowsFor( Object leftValue ) { if (leftValue == null) { // Nothing on the right ever matches a NULL on the left ... return null; } Range<Object> range = HashJoinSequence.this.rangeProducer.getRange(leftValue); if (range == null) return null; return buffer.getAll(range.lowerBound(), range.isLowerBoundIncluded(), range.upperBound(), range.isUpperBoundIncluded()); } }