@Test public void shouldCreateDistinctBufferOnHeap() { try (DistinctBuffer<String> buffer = mgr.createDistinctBuffer(Serializer.STRING).useHeap(true).keepSize(true).make()) { assertTrue(buffer.addIfAbsent("first")); assertTrue(buffer.addIfAbsent("second")); assertTrue(buffer.addIfAbsent("third")); assertTrue(buffer.addIfAbsent("fourth")); assertFalse(buffer.addIfAbsent("first")); assertFalse(buffer.addIfAbsent("second")); assertFalse(buffer.addIfAbsent("fourth")); assertFalse(buffer.addIfAbsent("third")); assertThat(buffer.size(), is(4L)); } }
@Test public void shouldCreateDistinctBufferOffHeap() { try (DistinctBuffer<String> buffer = mgr.createDistinctBuffer(Serializer.STRING).useHeap(false).keepSize(true).make()) { assertTrue(buffer.addIfAbsent("first")); assertTrue(buffer.addIfAbsent("second")); assertTrue(buffer.addIfAbsent("third")); assertTrue(buffer.addIfAbsent("fourth")); assertFalse(buffer.addIfAbsent("first")); assertFalse(buffer.addIfAbsent("second")); assertFalse(buffer.addIfAbsent("fourth")); assertFalse(buffer.addIfAbsent("third")); assertThat(buffer.size(), is(4L)); } }
Serializer<?> serializer = Tuples.serializer(keySerializer, delegate.width()); final DistinctBuffer<Object> rowsSeen = (DistinctBuffer<Object>)bufferMgr.createDistinctBuffer(serializer).keepSize(true) .useHeap(useHeap).make(); this.filter = new RowFilter() { @Override
Serializer<?> serializer = Tuples.serializer(keySerializer, delegate.width()); final DistinctBuffer<Object> rowsSeen = (DistinctBuffer<Object>)bufferMgr.createDistinctBuffer(serializer).keepSize(true) .useHeap(useHeap).make(); this.filter = new RowFilter() { @Override
@SuppressWarnings( "unchecked" ) public HashJoinSequence( String workspaceName, NodeSequence left, NodeSequence right, ExtractFromRow leftExtractor, ExtractFromRow rightExtractor, JoinType joinType, BufferManager bufferMgr, CachedNodeSupplier nodeCache, RangeProducer<?> rangeProducer, boolean pack, boolean useHeap ) { super(workspaceName, left, right, leftExtractor, rightExtractor, joinType, bufferMgr, nodeCache, pack, useHeap, true); this.rangeProducer = (RangeProducer<Object>)rangeProducer; if (useNonMatchingRightRows()) { TypeFactory<?> keyType = rightExtractor.getType(); Serializer<?> keySerializer = bufferMgr.serializerFor(keyType); rightMatchedRowKeys = (DistinctBuffer<Object>)bufferMgr.createDistinctBuffer(keySerializer).keepSize(true) .useHeap(useHeap).make(); Serializer<BufferedRow> rowSerializer = (Serializer<BufferedRow>)BufferedRows.serializer(nodeCache, width); rightRowsWithNullKey = bufferMgr.createDistinctBuffer(rowSerializer).keepSize(true).useHeap(useHeap).make(); } else { rightMatchedRowKeys = null; rightRowsWithNullKey = null; } }
@SuppressWarnings( "unchecked" ) public HashJoinSequence( String workspaceName, NodeSequence left, NodeSequence right, ExtractFromRow leftExtractor, ExtractFromRow rightExtractor, JoinType joinType, BufferManager bufferMgr, CachedNodeSupplier nodeCache, RangeProducer<?> rangeProducer, boolean pack, boolean useHeap ) { super(workspaceName, left, right, leftExtractor, rightExtractor, joinType, bufferMgr, nodeCache, pack, useHeap, true); this.rangeProducer = (RangeProducer<Object>)rangeProducer; if (useNonMatchingRightRows()) { TypeFactory<?> keyType = rightExtractor.getType(); Serializer<?> keySerializer = bufferMgr.serializerFor(keyType); rightMatchedRowKeys = (DistinctBuffer<Object>)bufferMgr.createDistinctBuffer(keySerializer).keepSize(true) .useHeap(useHeap).make(); Serializer<BufferedRow> rowSerializer = (Serializer<BufferedRow>)BufferedRows.serializer(nodeCache, width); rightRowsWithNullKey = bufferMgr.createDistinctBuffer(rowSerializer).keepSize(true).useHeap(useHeap).make(); } else { rightMatchedRowKeys = null; rightRowsWithNullKey = null; } }
@SuppressWarnings( {"unchecked"} ) public SortingSequence( String workspaceName, NodeSequence delegate, ExtractFromRow extractor, BufferManager bufferMgr, CachedNodeSupplier nodeCache, boolean pack, boolean useHeap, boolean allowDuplicates, NullOrder nullOrder ) { super(workspaceName, delegate, extractor, bufferMgr, nodeCache, pack, useHeap, allowDuplicates); this.nullOrder = nullOrder; // Create the buffer into which we'll place the rows with null keys ... Serializer<BufferedRow> rowSerializer = (Serializer<BufferedRow>)BufferedRows.serializer(nodeCache, width); rowsWithNullKey = bufferMgr.createDistinctBuffer(rowSerializer).keepSize(true).useHeap(useHeap).make(); }
@SuppressWarnings( {"unchecked"} ) public SortingSequence( String workspaceName, NodeSequence delegate, ExtractFromRow extractor, BufferManager bufferMgr, CachedNodeSupplier nodeCache, boolean pack, boolean useHeap, boolean allowDuplicates, NullOrder nullOrder ) { super(workspaceName, delegate, extractor, bufferMgr, nodeCache, pack, useHeap, allowDuplicates); this.nullOrder = nullOrder; // Create the buffer into which we'll place the rows with null keys ... Serializer<BufferedRow> rowSerializer = (Serializer<BufferedRow>)BufferedRows.serializer(nodeCache, width); rowsWithNullKey = bufferMgr.createDistinctBuffer(rowSerializer).keepSize(true).useHeap(useHeap).make(); }