@Override public void writeObject(BlockBuilder blockBuilder, Object value) { blockBuilder.appendStructure((Block) value); }
@Override public void writeObject(BlockBuilder blockBuilder, Object value) { blockBuilder.appendStructure((Block) value); }
@Override public void writeObject(BlockBuilder blockBuilder, Object value) { if (!(value instanceof SingleMapBlock)) { throw new IllegalArgumentException("Maps must be represented with SingleMapBlock"); } blockBuilder.appendStructure((Block) value); }
@Override public BlockBuilder appendStructure(Block block) { if (writeToValueNext) { valueBlockBuilder.appendStructure(block); } else { keyBlockBuilder.appendStructure(block); } entryAdded(); return this; }
@Override public BlockBuilder appendStructure(Block block) { blockBuilder.appendStructure(block); entryAdded(); return this; }
@Override public BlockBuilder appendStructure(Block block) { checkFieldIndexToWrite(); fieldBlockBuilders[currentFieldIndexToWrite].appendStructure(block); entryAdded(); return this; }
@UsedByGeneratedCode public static long hash(Type rowType, Block block) { BlockBuilder blockBuilder = rowType.createBlockBuilder(null, 1); blockBuilder.appendStructure(block); return rowType.hash(blockBuilder.build(), 0); } }
private static BlockBuilder writeValues(long[][] expectedValues, BlockBuilder blockBuilder) { for (long[] expectedValue : expectedValues) { if (expectedValue == null) { blockBuilder.appendNull(); } else { BlockBuilder elementBlockBuilder = BIGINT.createBlockBuilder(null, expectedValue.length); for (long v : expectedValue) { BIGINT.writeLong(elementBlockBuilder, v); } blockBuilder.appendStructure(elementBlockBuilder); } } return blockBuilder; }
private static Block copyBlockViaWriteStructure(Block block, Supplier<BlockBuilder> newBlockBuilder) { BlockBuilder blockBuilder = newBlockBuilder.get(); for (int i = 0; i < block.getPositionCount(); i++) { if (block.isNull(i)) { blockBuilder.appendNull(); } else { blockBuilder.appendStructure(block.getObject(i, Block.class)); } } return blockBuilder.build(); }
@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; } }
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; }
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; } }
@Test public void testNewBlockBuilderLike() { ArrayType longArrayType = new ArrayType(BIGINT); ArrayType arrayType = new ArrayType(longArrayType); List<Type> channels = ImmutableList.of(BIGINT, VARCHAR, arrayType); PageBuilder pageBuilder = new PageBuilder(channels); BlockBuilder bigintBlockBuilder = pageBuilder.getBlockBuilder(0); BlockBuilder varcharBlockBuilder = pageBuilder.getBlockBuilder(1); BlockBuilder arrayBlockBuilder = pageBuilder.getBlockBuilder(2); for (int i = 0; i < 100; i++) { BIGINT.writeLong(bigintBlockBuilder, i); VARCHAR.writeSlice(varcharBlockBuilder, Slices.utf8Slice("test" + i)); Block longArrayBlock = new ArrayType(BIGINT) .createBlockBuilder(null, 1) .appendStructure(BIGINT.createBlockBuilder(null, 2).writeLong(i).closeEntry().writeLong(i * 2).closeEntry().build()); arrayBlockBuilder.appendStructure(longArrayBlock); pageBuilder.declarePosition(); } PageBuilder newPageBuilder = pageBuilder.newPageBuilderLike(); for (int i = 0; i < channels.size(); i++) { assertEquals(newPageBuilder.getType(i), pageBuilder.getType(i)); // we should get new block builder instances assertNotEquals(pageBuilder.getBlockBuilder(i), newPageBuilder.getBlockBuilder(i)); assertEquals(newPageBuilder.getBlockBuilder(i).getPositionCount(), 0); assertTrue(newPageBuilder.getBlockBuilder(i).getRetainedSizeInBytes() < pageBuilder.getBlockBuilder(i).getRetainedSizeInBytes()); } }
@Test public void testStackRepresentation() { Block actualBlock = arrayBlockOf(new ArrayType(BIGINT), arrayBlockOf(BIGINT, 1L, 2L), arrayBlockOf(BIGINT, 3L)); DynamicSliceOutput actualSliceOutput = new DynamicSliceOutput(100); writeBlock(functionAssertions.getMetadata().getBlockEncodingSerde(), actualSliceOutput, actualBlock); Block expectedBlock = new ArrayType(BIGINT) .createBlockBuilder(null, 3) .appendStructure(BIGINT.createBlockBuilder(null, 2).writeLong(1).closeEntry().writeLong(2).closeEntry().build()) .appendStructure(BIGINT.createBlockBuilder(null, 1).writeLong(3).closeEntry().build()) .build(); DynamicSliceOutput expectedSliceOutput = new DynamicSliceOutput(100); writeBlock(functionAssertions.getMetadata().getBlockEncodingSerde(), expectedSliceOutput, expectedBlock); assertEquals(actualSliceOutput.slice(), expectedSliceOutput.slice()); }
@Override public void writeObject(BlockBuilder blockBuilder, Object value) { blockBuilder.appendStructure((Block) value); }
@Override public void writeObject(BlockBuilder blockBuilder, Object value) { if (!(value instanceof SingleMapBlock)) { throw new IllegalArgumentException("Maps must be represented with SingleMapBlock"); } blockBuilder.appendStructure((Block) value); }
@Override public BlockBuilder appendStructure(Block block) { if (writeToValueNext) { valueBlockBuilder.appendStructure(block); } else { keyBlockBuilder.appendStructure(block); } entryAdded(); return this; }
@Override public BlockBuilder appendStructure(Block block) { blockBuilder.appendStructure(block); entryAdded(); return this; }
@Override public BlockBuilder appendStructure(Block block) { checkFieldIndexToWrite(); fieldBlockBuilders[currentFieldIndexToWrite].appendStructure(block); entryAdded(); return this; }