@Override public BlockBuilder createBlockBuilder(BlockBuilderStatus blockBuilderStatus, int expectedEntries, int expectedBytesPerEntry) { return new ArrayBlockBuilder(elementType, blockBuilderStatus, expectedEntries, expectedBytesPerEntry); }
@Override public BlockBuilder newBlockBuilderLike(BlockBuilderStatus blockBuilderStatus) { int newSize = calculateBlockResetSize(getPositionCount()); return new ArrayBlockBuilder(blockBuilderStatus, values.newBlockBuilderLike(blockBuilderStatus), newSize); }
private static BlockBuilder createBlockBuilderWithValues(long[][] expectedValues) { BlockBuilder blockBuilder = new ArrayBlockBuilder(BIGINT, null, 100, 100); return writeValues(expectedValues, blockBuilder); }
private static BlockBuilder createBlockBuilderWithValues(long[][][] expectedValues) { BlockBuilder blockBuilder = new ArrayBlockBuilder(new ArrayBlockBuilder(BIGINT, null, 100, 100), null, 100); for (long[][] expectedValue : expectedValues) { if (expectedValue == null) { blockBuilder.appendNull(); } else { BlockBuilder intermediateBlockBuilder = new ArrayBlockBuilder(BIGINT, null, 100, 100); for (int j = 0; j < expectedValue.length; j++) { if (expectedValue[j] == null) { intermediateBlockBuilder.appendNull(); } else { BlockBuilder innerMostBlockBuilder = BIGINT.createBlockBuilder(null, expectedValue.length); for (long v : expectedValue[j]) { BIGINT.writeLong(innerMostBlockBuilder, v); } intermediateBlockBuilder.appendStructure(innerMostBlockBuilder.build()); } } blockBuilder.appendStructure(intermediateBlockBuilder.build()); } } return blockBuilder; }
@Test public void testArrayBlock() { BlockBuilder arrayBlockBuilder = new ArrayBlockBuilder(BIGINT, null, EXPECTED_ENTRIES); for (int i = 0; i < EXPECTED_ENTRIES; i++) { BlockBuilder arrayElementBuilder = arrayBlockBuilder.beginBlockEntry(); writeNativeValue(BIGINT, arrayElementBuilder, castIntegerToObject(i, BIGINT)); arrayBlockBuilder.closeEntry(); } checkRetainedSize(arrayBlockBuilder.build(), false); }
@Test public void testLazyBlockBuilderInitialization() { long[][] expectedValues = new long[ARRAY_SIZES.length][]; Random rand = new Random(47); for (int i = 0; i < ARRAY_SIZES.length; i++) { expectedValues[i] = rand.longs(ARRAY_SIZES[i]).toArray(); } BlockBuilder emptyBlockBuilder = new ArrayBlockBuilder(BIGINT, null, 0, 0); BlockBuilder blockBuilder = new ArrayBlockBuilder(BIGINT, null, 100, 100); assertEquals(blockBuilder.getSizeInBytes(), emptyBlockBuilder.getSizeInBytes()); assertEquals(blockBuilder.getRetainedSizeInBytes(), emptyBlockBuilder.getRetainedSizeInBytes()); writeValues(expectedValues, blockBuilder); assertTrue(blockBuilder.getSizeInBytes() > emptyBlockBuilder.getSizeInBytes()); assertTrue(blockBuilder.getRetainedSizeInBytes() > emptyBlockBuilder.getRetainedSizeInBytes()); blockBuilder = blockBuilder.newBlockBuilderLike(null); assertEquals(blockBuilder.getSizeInBytes(), emptyBlockBuilder.getSizeInBytes()); assertEquals(blockBuilder.getRetainedSizeInBytes(), emptyBlockBuilder.getRetainedSizeInBytes()); }
@Test public void testRetainedSizeInBytes() { int expectedEntries = 1000; BlockBuilder arrayBlockBuilder = new ArrayBlockBuilder(BIGINT, null, expectedEntries); long initialRetainedSize = arrayBlockBuilder.getRetainedSizeInBytes(); for (int i = 0; i < expectedEntries; i++) { BlockBuilder arrayElementBuilder = arrayBlockBuilder.beginBlockEntry(); BIGINT.writeLong(arrayElementBuilder, i); arrayBlockBuilder.closeEntry(); } assertTrue(arrayBlockBuilder.getRetainedSizeInBytes() >= (expectedEntries * Long.BYTES + ClassLayout.parseClass(LongArrayBlockBuilder.class).instanceSize() + initialRetainedSize)); }
private void testIsFull(PageBuilderStatus pageBuilderStatus) { BlockBuilder blockBuilder = new ArrayBlockBuilder(BIGINT, pageBuilderStatus.createBlockBuilderStatus(), EXPECTED_ENTRY_COUNT); assertTrue(pageBuilderStatus.isEmpty()); while (!pageBuilderStatus.isFull()) { BlockBuilder elementBuilder = blockBuilder.beginBlockEntry(); BIGINT.writeLong(elementBuilder, 12); elementBuilder.appendNull(); BIGINT.writeLong(elementBuilder, 34); blockBuilder.closeEntry(); } assertEquals(blockBuilder.getPositionCount(), EXPECTED_ENTRY_COUNT); assertEquals(pageBuilderStatus.isFull(), true); }
@Test(expectedExceptions = IllegalStateException.class, expectedExceptionsMessageRegExp = "Expected current entry to be closed but was opened") public void testConcurrentWriting() { BlockBuilder blockBuilder = new ArrayBlockBuilder(BIGINT, null, EXPECTED_ENTRY_COUNT); BlockBuilder elementBlockWriter = blockBuilder.beginBlockEntry(); elementBlockWriter.writeLong(45).closeEntry(); blockBuilder.appendStructure(new FixedWidthBlockBuilder(8, 4).writeLong(123).closeEntry().build()); } }
private static BlockBuilder createBlockBuilderWithValues(Slice[][] expectedValues) { BlockBuilder blockBuilder = new ArrayBlockBuilder(VARCHAR, null, 100, 100); for (Slice[] expectedValue : expectedValues) { if (expectedValue == null) { blockBuilder.appendNull(); } else { BlockBuilder elementBlockBuilder = VARCHAR.createBlockBuilder(null, expectedValue.length); for (Slice v : expectedValue) { VARCHAR.writeSlice(elementBlockBuilder, v); } blockBuilder.appendStructure(elementBlockBuilder.build()); } } return blockBuilder; } }
public static BlockBuilder createBlockBuilderWithValues(Slice[][] expectedValues) { BlockBuilder blockBuilder = new ArrayBlockBuilder(VARCHAR, null, 100, 100); for (Slice[] expectedValue : expectedValues) { if (expectedValue == null) { blockBuilder.appendNull(); } else { BlockBuilder elementBlockBuilder = VARCHAR.createBlockBuilder(null, expectedValue.length); for (Slice v : expectedValue) { if (v == null) { elementBlockBuilder.appendNull(); } else { VARCHAR.writeSlice(elementBlockBuilder, v); } } blockBuilder.appendStructure(elementBlockBuilder.build()); } } return blockBuilder; } }
@Override public BlockBuilder createBlockBuilder(BlockBuilderStatus blockBuilderStatus, int expectedEntries, int expectedBytesPerEntry) { return new ArrayBlockBuilder(elementType, blockBuilderStatus, expectedEntries, expectedBytesPerEntry); }
@Override public BlockBuilder createBlockBuilder(BlockBuilderStatus blockBuilderStatus, int expectedEntries, int expectedBytesPerEntry) { return new ArrayBlockBuilder(elementType, blockBuilderStatus, expectedEntries, expectedBytesPerEntry); }
@Override public BlockBuilder createBlockBuilder(BlockBuilderStatus blockBuilderStatus, int expectedEntries, int expectedBytesPerEntry) { return new ArrayBlockBuilder( new InterleavedBlockBuilder(getTypeParameters(), blockBuilderStatus, expectedEntries * getTypeParameters().size(), expectedBytesPerEntry), blockBuilderStatus, expectedEntries); }
@Override public BlockBuilder newBlockBuilderLike(BlockBuilderStatus blockBuilderStatus) { int newSize = calculateBlockResetSize(getPositionCount()); return new ArrayBlockBuilder(blockBuilderStatus, values.newBlockBuilderLike(blockBuilderStatus), newSize); }
@Override public BlockBuilder createBlockBuilder(BlockBuilderStatus blockBuilderStatus, int expectedEntries) { return new ArrayBlockBuilder( new InterleavedBlockBuilder(getTypeParameters(), blockBuilderStatus, expectedEntries * getTypeParameters().size()), blockBuilderStatus, expectedEntries); }
@Override public BlockBuilder createBlockBuilder(BlockBuilderStatus blockBuilderStatus, int expectedEntries, int expectedBytesPerEntry) { return new ArrayBlockBuilder( new InterleavedBlockBuilder(getTypeParameters(), blockBuilderStatus, expectedEntries * 2, expectedBytesPerEntry), blockBuilderStatus, expectedEntries); }
private BlockBuilder createBlockBuilderWithValues(long[][][] expectedValues) { BlockBuilder blockBuilder = new ArrayBlockBuilder(new ArrayBlockBuilder(BIGINT, new BlockBuilderStatus(), 100, 100), new BlockBuilderStatus(), 100); for (long[][] expectedValue : expectedValues) { if (expectedValue == null) { blockBuilder.appendNull(); } else { BlockBuilder intermediateBlockBuilder = new ArrayBlockBuilder(BIGINT, new BlockBuilderStatus(), 100, 100); for (int j = 0; j < expectedValue.length; j++) { if (expectedValue[j] == null) { intermediateBlockBuilder.appendNull(); } else { BlockBuilder innerMostBlockBuilder = BIGINT.createBlockBuilder(new BlockBuilderStatus(), expectedValue.length); for (long v : expectedValue[j]) { BIGINT.writeLong(innerMostBlockBuilder, v); } intermediateBlockBuilder.writeObject(innerMostBlockBuilder.build()).closeEntry(); } } blockBuilder.writeObject(intermediateBlockBuilder.build()).closeEntry(); } } return blockBuilder; }
private BlockBuilder createBlockBuilderWithValues(long[][] expectedValues) { BlockBuilder blockBuilder = new ArrayBlockBuilder(BIGINT, new BlockBuilderStatus(), 100, 100); for (long[] expectedValue : expectedValues) { if (expectedValue == null) { blockBuilder.appendNull(); } else { BlockBuilder elementBlockBuilder = BIGINT.createBlockBuilder(new BlockBuilderStatus(), expectedValue.length); for (long v : expectedValue) { BIGINT.writeLong(elementBlockBuilder, v); } blockBuilder.writeObject(elementBlockBuilder).closeEntry(); } } return blockBuilder; }
private BlockBuilder createBlockBuilderWithValues(Slice[][] expectedValues) { BlockBuilder blockBuilder = new ArrayBlockBuilder(VARCHAR, new BlockBuilderStatus(), 100, 100); for (Slice[] expectedValue : expectedValues) { if (expectedValue == null) { blockBuilder.appendNull(); } else { BlockBuilder elementBlockBuilder = VARCHAR.createBlockBuilder(new BlockBuilderStatus(), expectedValue.length); for (Slice v : expectedValue) { VARCHAR.writeSlice(elementBlockBuilder, v); } blockBuilder.writeObject(elementBlockBuilder.build()).closeEntry(); } } return blockBuilder; } }