@Override public long getRegionSizeInBytes(int positionOffset, int length) { return block.getRegionSizeInBytes(positionOffset, length); }
@Override public long getRegionSizeInBytes(int positionOffset, int length) { return block.getRegionSizeInBytes(positionOffset, length); }
private void calculateSize() { int entriesStart = offsets[startOffset]; int entriesEnd = offsets[startOffset + positionCount]; int entryCount = entriesEnd - entriesStart; sizeInBytes = keyBlock.getRegionSizeInBytes(entriesStart, entryCount) + valueBlock.getRegionSizeInBytes(entriesStart, entryCount) + (Integer.BYTES + Byte.BYTES) * (long) this.positionCount + Integer.BYTES * HASH_MULTIPLIER * (long) entryCount; }
private void calculateSize() { int valueStart = offsets[arrayOffset]; int valueEnd = offsets[arrayOffset + positionCount]; sizeInBytes = values.getRegionSizeInBytes(valueStart, valueEnd - valueStart) + ((Integer.BYTES + Byte.BYTES) * (long) this.positionCount); }
private void calculateSize() { int startFieldBlockOffset = fieldBlockOffsets[startOffset]; int endFieldBlockOffset = fieldBlockOffsets[startOffset + positionCount]; int fieldBlockLength = endFieldBlockOffset - startFieldBlockOffset; long sizeInBytes = (Integer.BYTES + Byte.BYTES) * (long) positionCount; for (int i = 0; i < numFields; i++) { sizeInBytes += fieldBlocks[i].getRegionSizeInBytes(startFieldBlockOffset, fieldBlockLength); } this.sizeInBytes = sizeInBytes; }
@Override public long getSizeInBytes() { return keyBlock.getRegionSizeInBytes(offset / 2, positionCount / 2) + valueBlock.getRegionSizeInBytes(offset / 2, positionCount / 2) + sizeOfIntArray(positionCount / 2 * HASH_MULTIPLIER); }
@Override public long getSizeInBytes() { long sizeInBytes = 0; for (int i = 0; i < fieldBlocks.length; i++) { sizeInBytes += getRawFieldBlock(i).getRegionSizeInBytes(rowIndex, 1); } return sizeInBytes; }
@Override public long getRegionSizeInBytes(int position, int length) { assureLoaded(); return block.getRegionSizeInBytes(position, length); }
@Override public long getLogicalSizeInBytes() { if (logicalSizeInBytes >= 0) { return logicalSizeInBytes; } // Calculation of logical size can be performed as part of calculateCompactSize() with minor modifications. // Keeping this calculation separate as this is a little more expensive and may not be called as often. long sizeInBytes = 0; long[] seenSizes = new long[dictionary.getPositionCount()]; Arrays.fill(seenSizes, -1L); for (int i = 0; i < getPositionCount(); i++) { int position = getId(i); if (seenSizes[position] < 0) { seenSizes[position] = dictionary.getRegionSizeInBytes(position, 1); } sizeInBytes += seenSizes[position]; } logicalSizeInBytes = sizeInBytes; return sizeInBytes; }
@Override public long getRegionSizeInBytes(int position, int length) { int positionCount = getPositionCount(); checkValidRegion(positionCount, position, length); int entriesStart = getOffsets()[getOffsetBase() + position]; int entriesEnd = getOffsets()[getOffsetBase() + position + length]; int entryCount = entriesEnd - entriesStart; return getRawKeyBlock().getRegionSizeInBytes(entriesStart, entryCount) + getRawValueBlock().getRegionSizeInBytes(entriesStart, entryCount) + (Integer.BYTES + Byte.BYTES) * (long) length + Integer.BYTES * HASH_MULTIPLIER * (long) entryCount; }
@Override public long getRegionSizeInBytes(int position, int length) { int positionCount = getPositionCount(); checkValidRegion(positionCount, position, length); int startFieldBlockOffset = getFieldBlockOffset(position); int endFieldBlockOffset = getFieldBlockOffset(position + length); int fieldBlockLength = endFieldBlockOffset - startFieldBlockOffset; long regionSizeInBytes = (Integer.BYTES + Byte.BYTES) * (long) length; for (int i = 0; i < numFields; i++) { regionSizeInBytes += getRawFieldBlocks()[i].getRegionSizeInBytes(startFieldBlockOffset, fieldBlockLength); } return regionSizeInBytes; }
@Override public long getRegionSizeInBytes(int position, int length) { int positionCount = getPositionCount(); checkValidRegion(positionCount, position, length); int valueStart = getOffsets()[getOffsetBase() + position]; int valueEnd = getOffsets()[getOffsetBase() + position + length]; return getRawElementBlock().getRegionSizeInBytes(valueStart, valueEnd - valueStart) + ((Integer.BYTES + Byte.BYTES) * (long) length); }
private void assertBlockSize(Block block) { // Asserting on `block` is not very effective because most blocks passed to this method is compact. // Therefore, we split the `block` into two and assert again. long expectedBlockSize = copyBlockViaBlockSerde(block).getSizeInBytes(); assertEquals(block.getSizeInBytes(), expectedBlockSize); assertEquals(block.getRegionSizeInBytes(0, block.getPositionCount()), expectedBlockSize); List<Block> splitBlock = splitBlock(block, 2); Block firstHalf = splitBlock.get(0); long expectedFirstHalfSize = copyBlockViaBlockSerde(firstHalf).getSizeInBytes(); assertEquals(firstHalf.getSizeInBytes(), expectedFirstHalfSize); assertEquals(block.getRegionSizeInBytes(0, firstHalf.getPositionCount()), expectedFirstHalfSize); Block secondHalf = splitBlock.get(1); long expectedSecondHalfSize = copyBlockViaBlockSerde(secondHalf).getSizeInBytes(); assertEquals(secondHalf.getSizeInBytes(), expectedSecondHalfSize); assertEquals(block.getRegionSizeInBytes(firstHalf.getPositionCount(), secondHalf.getPositionCount()), expectedSecondHalfSize); boolean[] positions = new boolean[block.getPositionCount()]; fill(positions, 0, firstHalf.getPositionCount(), true); assertEquals(block.getPositionsSizeInBytes(positions), expectedFirstHalfSize); fill(positions, true); assertEquals(block.getPositionsSizeInBytes(positions), expectedBlockSize); fill(positions, 0, firstHalf.getPositionCount(), false); assertEquals(block.getPositionsSizeInBytes(positions), expectedSecondHalfSize); }
private void assertBlockSize(Block block) { // Asserting on `block` is not very effective because most blocks passed to this method is compact. // Therefore, we split the `block` into two and assert again. long expectedBlockSize = copyBlockViaBlockSerde(block).getSizeInBytes(); assertEquals(block.getSizeInBytes(), expectedBlockSize); assertEquals(block.getRegionSizeInBytes(0, block.getPositionCount()), expectedBlockSize); List<Block> splitBlock = splitBlock(block, 2); Block firstHalf = splitBlock.get(0); long expectedFirstHalfSize = copyBlockViaBlockSerde(firstHalf).getSizeInBytes(); assertEquals(firstHalf.getSizeInBytes(), expectedFirstHalfSize); assertEquals(block.getRegionSizeInBytes(0, firstHalf.getPositionCount()), expectedFirstHalfSize); Block secondHalf = splitBlock.get(1); long expectedSecondHalfSize = copyBlockViaBlockSerde(secondHalf).getSizeInBytes(); assertEquals(secondHalf.getSizeInBytes(), expectedSecondHalfSize); assertEquals(block.getRegionSizeInBytes(firstHalf.getPositionCount(), secondHalf.getPositionCount()), expectedSecondHalfSize); boolean[] positions = new boolean[block.getPositionCount()]; fill(positions, 0, firstHalf.getPositionCount(), true); assertEquals(block.getPositionsSizeInBytes(positions), expectedFirstHalfSize); fill(positions, true); assertEquals(block.getPositionsSizeInBytes(positions), expectedBlockSize); fill(positions, 0, firstHalf.getPositionCount(), false); assertEquals(block.getPositionsSizeInBytes(positions), expectedSecondHalfSize); }
while (inputPage.getBlock(0).getRegionSizeInBytes(0, batchSize) > MAX_PAGE_SIZE_IN_BYTES) { batchSize /= 2;
while (inputPage.getBlock(0).getRegionSizeInBytes(0, batchSize) > MAX_PAGE_SIZE_IN_BYTES) { batchSize /= 2;