private void ensureHashTableSize() { if (hashTables.length < offsets[positionCount] * HASH_MULTIPLIER) { int newSize = BlockUtil.calculateNewArraySize(offsets[positionCount] * HASH_MULTIPLIER); int oldSize = hashTables.length; hashTables = Arrays.copyOf(hashTables, newSize); Arrays.fill(hashTables, oldSize, hashTables.length, -1); } }
private void growCapacity() { int newSize = BlockUtil.calculateNewArraySize(valueIsNull.length); valueIsNull = Arrays.copyOf(valueIsNull, newSize); offsets = Arrays.copyOf(offsets, newSize + 1); updateArraysDataSize(); }
private void growCapacity() { int newSize; if (initialized) { newSize = BlockUtil.calculateNewArraySize(values.length); } else { newSize = initialEntryCount; initialized = true; } valueIsNull = Arrays.copyOf(valueIsNull, newSize); values = Arrays.copyOf(values, newSize); updateDataSize(); }
private void growCapacity() { int newSize; if (initialized) { newSize = BlockUtil.calculateNewArraySize(values.length); } else { newSize = initialEntryCount; initialized = true; } valueIsNull = Arrays.copyOf(valueIsNull, newSize); values = Arrays.copyOf(values, newSize); updateDataSize(); }
private void growCapacity() { int newSize; if (initialized) { newSize = BlockUtil.calculateNewArraySize(values.length); } else { newSize = initialEntryCount; initialized = true; } valueIsNull = Arrays.copyOf(valueIsNull, newSize); values = Arrays.copyOf(values, newSize); updateDataSize(); }
private void growCapacity() { int newSize; if (initialized) { newSize = BlockUtil.calculateNewArraySize(values.length); } else { newSize = initialEntryCount; initialized = true; } valueIsNull = Arrays.copyOf(valueIsNull, newSize); values = Arrays.copyOf(values, newSize); updateDataSize(); }
private void growCapacity() { int newSize; if (initialized) { newSize = BlockUtil.calculateNewArraySize(valueIsNull.length); } else { newSize = initialEntryCount; initialized = true; } valueIsNull = Arrays.copyOf(valueIsNull, newSize); offsets = Arrays.copyOf(offsets, newSize + 1); updateDataSize(); }
@Test public void testCalculateNewArraySize() { assertEquals(BlockUtil.calculateNewArraySize(200), 300); assertEquals(BlockUtil.calculateNewArraySize(Integer.MAX_VALUE), MAX_ARRAY_SIZE); try { BlockUtil.calculateNewArraySize(MAX_ARRAY_SIZE); } catch (IllegalArgumentException e) { assertEquals(e.getMessage(), format("Can not grow array beyond '%s'", MAX_ARRAY_SIZE)); } } }
@Test public void testCalculateNewArraySize() { assertEquals(BlockUtil.calculateNewArraySize(200), 300); assertEquals(BlockUtil.calculateNewArraySize(Integer.MAX_VALUE), MAX_ARRAY_SIZE); try { BlockUtil.calculateNewArraySize(MAX_ARRAY_SIZE); } catch (IllegalArgumentException e) { assertEquals(e.getMessage(), format("Can not grow array beyond '%s'", MAX_ARRAY_SIZE)); } } }
private void entryAdded(boolean isNull) { if (rowIsNull.length <= positionCount) { int newSize = BlockUtil.calculateNewArraySize(rowIsNull.length); rowIsNull = Arrays.copyOf(rowIsNull, newSize); fieldBlockOffsets = Arrays.copyOf(fieldBlockOffsets, newSize + 1); } if (isNull) { fieldBlockOffsets[positionCount + 1] = fieldBlockOffsets[positionCount]; } else { fieldBlockOffsets[positionCount + 1] = fieldBlockOffsets[positionCount] + 1; } rowIsNull[positionCount] = isNull; positionCount++; for (int i = 0; i < numFields; i++) { if (fieldBlockBuilders[i].getPositionCount() != fieldBlockOffsets[positionCount]) { throw new IllegalStateException(format("field %s has unexpected position count. Expected: %s, actual: %s", i, fieldBlockOffsets[positionCount], fieldBlockBuilders[i].getPositionCount())); } } if (blockBuilderStatus != null) { blockBuilderStatus.addBytes(Integer.BYTES + Byte.BYTES); } }
private void entryAdded(boolean isNull) { if (keyBlockBuilder.getPositionCount() != valueBlockBuilder.getPositionCount()) { throw new IllegalStateException(format("keyBlock and valueBlock has different size: %s %s", keyBlockBuilder.getPositionCount(), valueBlockBuilder.getPositionCount())); } if (mapIsNull.length <= positionCount) { int newSize = BlockUtil.calculateNewArraySize(mapIsNull.length); mapIsNull = Arrays.copyOf(mapIsNull, newSize); offsets = Arrays.copyOf(offsets, newSize + 1); } offsets[positionCount + 1] = keyBlockBuilder.getPositionCount(); mapIsNull[positionCount] = isNull; positionCount++; if (blockBuilderStatus != null) { blockBuilderStatus.addBytes(Integer.BYTES + Byte.BYTES); blockBuilderStatus.addBytes((offsets[positionCount] - offsets[positionCount - 1]) * HASH_MULTIPLIER * Integer.BYTES); } }