@Override public void appendTo(long position, PageBuilder pageBuilder, int outputChannelOffset) { pagesHash.appendTo(toIntExact(position), pageBuilder, outputChannelOffset); }
@Override public final int getChannelCount() { return pagesHash.getChannelCount(); }
@Override public double getExpectedHashCollisions() { return pagesHash.getExpectedHashCollisions(); }
public int getAddressIndex(int rightPosition, Page hashChannelsPage, long rawHash) { int pos = getHashPosition(rawHash, mask); while (key[pos] != -1) { if (positionEqualsCurrentRowIgnoreNulls(key[pos], (byte) rawHash, rightPosition, hashChannelsPage)) { return key[pos]; } // increment position and mask to handler wrap around pos = (pos + 1) & mask; } return -1; }
long hash = readHashPosition(realPosition); positionToFullHashes[position] = hash; positionToHashes[realPosition] = (byte) hash; if (isPositionNull(realPosition)) { continue; int pos = getHashPosition(hash, mask); if (((byte) hash) == positionToHashes[currentKey] && positionEqualsPositionIgnoreNulls(currentKey, realPosition)) {
@Override public long getJoinPosition(int position, Page hashChannelsPage, Page allChannelsPage) { int addressIndex = pagesHash.getAddressIndex(position, hashChannelsPage); return startJoinPosition(addressIndex, position, allChannelsPage); }
@Override public long getHashCollisions() { return pagesHash.getHashCollisions(); }
@Override public long getJoinPositionCount() { return pagesHash.getPositionCount(); }
@Override public long getInMemorySizeInBytes() { return INSTANCE_SIZE + pagesHash.getInMemorySizeInBytes() + (positionLinks == null ? 0 : positionLinks.getSizeInBytes()); }
this.pagesHash = new PagesHash(addresses, pagesHashStrategy, positionLinksFactoryBuilder); this.positionLinks = positionLinksFactoryBuilder.isEmpty() ? Optional.empty() : Optional.of(positionLinksFactoryBuilder.build());
@Override public long getJoinPosition(int position, Page hashChannelsPage, Page allChannelsPage, long rawHash) { int addressIndex = pagesHash.getAddressIndex(position, hashChannelsPage, rawHash); return startJoinPosition(addressIndex, position, allChannelsPage); }
public int getAddressIndex(int position, Page hashChannelsPage) { return getAddressIndex(position, hashChannelsPage, pagesHashStrategy.hashRow(position, hashChannelsPage)); }