@Override public void appendTo(long position, PageBuilder pageBuilder, int outputChannelOffset) { values.appendTo(position, pageBuilder, outputChannelOffset); }
@Override public synchronized boolean appendToNext(PageBuilder pageBuilder, int outputChannelOffset) { while (currentPosition < visitedPositions.length) { if (!visitedPositions[currentPosition]) { lookupSource.appendTo(currentPosition, pageBuilder, outputChannelOffset); currentPosition++; return true; } currentPosition++; } return false; } }
@Override public synchronized boolean appendToNext(PageBuilder pageBuilder, int outputChannelOffset) { while (currentSource < lookupSources.length) { while (currentPosition < visitedPositions[currentSource].length) { if (!visitedPositions[currentSource][currentPosition]) { lookupSources[currentSource].appendTo(currentPosition, pageBuilder, outputChannelOffset); currentPosition++; return true; } currentPosition++; } currentPosition = 0; currentSource++; } return false; } }
@Override public void appendTo(long position, PageBuilder pageBuilder, int outputChannelOffset) { lookupSource.appendTo(position, pageBuilder, outputChannelOffset); outerPositionTracker.positionVisited(position); }
/** * append the index for the probe and copy the row for the build */ public void appendRow(JoinProbe probe, LookupSource lookupSource, long joinPosition) { // probe side appendProbeIndex(probe); // build side buildPageBuilder.declarePosition(); lookupSource.appendTo(joinPosition, buildPageBuilder, 0); }
@Override public void appendTo(long partitionedJoinPosition, PageBuilder pageBuilder, int outputChannelOffset) { int partition = decodePartition(partitionedJoinPosition); int joinPosition = decodeJoinPosition(partitionedJoinPosition); lookupSources[partition].appendTo(joinPosition, pageBuilder, outputChannelOffset); if (outerPositionTracker != null) { outerPositionTracker.positionVisited(partition, joinPosition); } }
@Override public void appendTo(long position, PageBuilder pageBuilder, int outputChannelOffset) { values.appendTo(position, pageBuilder, outputChannelOffset); }
@Override public void appendTo(long partitionedJoinPosition, PageBuilder pageBuilder, int outputChannelOffset) { int partition = (int) (partitionedJoinPosition & partitionMask); long joinPosition = partitionedJoinPosition >>> lookupSources.length; LookupSource lookupSource = lookupSources[partition]; lookupSource.appendTo(joinPosition, pageBuilder, outputChannelOffset); }
@Override public void appendTo(long position, PageBuilder pageBuilder, int outputChannelOffset) { lookupSource.appendTo(position, pageBuilder, outputChannelOffset); }
@Override public void appendTo(long position, PageBuilder pageBuilder, int outputChannelOffset) { lookupSource.appendTo(position, pageBuilder, outputChannelOffset); positionTracker.visit(Ints.checkedCast(position)); }
private boolean joinCurrentPosition() { // while we have a position to join against... while (joinPosition >= 0) { pageBuilder.declarePosition(); // write probe columns probe.appendTo(pageBuilder); // write build columns lookupSource.appendTo(joinPosition, pageBuilder, probe.getChannelCount()); // get next join position for this row joinPosition = lookupSource.getNextJoinPosition(joinPosition); if (pageBuilder.isFull()) { return false; } } return true; }