Block expectedBoolean = VARBINARY.createBlockBuilder(null, 1).writeByte(1).closeEntry().build(); Block actualBoolean = toBinaryBlock(BOOLEAN, true, getInspector(Boolean.class)); assertBlockEquals(actualBoolean, expectedBoolean); Block expectedByte = VARBINARY.createBlockBuilder(null, 1).writeByte(5).closeEntry().build(); Block actualByte = toBinaryBlock(TINYINT, (byte) 5, getInspector(Byte.class)); assertBlockEquals(actualByte, expectedByte);
@Override public BlockBuilder writeByte(int value) { blockBuilder.writeByte(value); return this; }
Block expectedBoolean = VARBINARY.createBlockBuilder(null, 1).writeByte(1).closeEntry().build(); Block actualBoolean = toBinaryBlock(BOOLEAN, true, getInspector(Boolean.class)); assertBlockEquals(actualBoolean, expectedBoolean); Block expectedByte = VARBINARY.createBlockBuilder(null, 1).writeByte(5).closeEntry().build(); Block actualByte = toBinaryBlock(TINYINT, (byte) 5, getInspector(Byte.class)); assertBlockEquals(actualByte, expectedByte);
@Override public BlockBuilder writeByte(int value) { checkFieldIndexToWrite(); fieldBlockBuilders[currentFieldIndexToWrite].writeByte(value); return this; }
@Override public void writeBoolean(BlockBuilder blockBuilder, boolean value) { blockBuilder.writeByte(value ? 1 : 0).closeEntry(); }
@Override public void writePositionTo(int position, BlockBuilder blockBuilder) { checkReadablePosition(position); blockBuilder.writeByte(values[position]); blockBuilder.closeEntry(); }
@Override public void writeLong(BlockBuilder blockBuilder, long value) { if (value > Byte.MAX_VALUE) { throw new PrestoException(GENERIC_INTERNAL_ERROR, String.format("Value %d exceeds MAX_BYTE", value)); } else if (value < Byte.MIN_VALUE) { throw new PrestoException(GENERIC_INTERNAL_ERROR, String.format("Value %d is less than MIN_BYTE", value)); } blockBuilder.writeByte((int) value).closeEntry(); }
@Override public void writePositionTo(int position, BlockBuilder blockBuilder) { checkReadablePosition(position); blockBuilder.writeByte(values[position + arrayOffset]); blockBuilder.closeEntry(); }
@Override public void serialize(TriStateBooleanState state, BlockBuilder out) { if (state.getByte() == NULL_VALUE) { out.appendNull(); } else { out.writeByte(state.getByte() == TRUE_VALUE ? 1 : 0).closeEntry(); } }
@Override public void appendTo(Block block, int position, BlockBuilder blockBuilder) { if (block.isNull(position)) { blockBuilder.appendNull(); } else { blockBuilder.writeByte(block.getByte(position, 0)).closeEntry(); } }
@Override public void serialize(TriStateBooleanState state, BlockBuilder out) { if (state.getByte() == NULL_VALUE) { out.appendNull(); } else { out.writeByte(state.getByte() == TRUE_VALUE ? 1 : 0).closeEntry(); } }
@Override public void appendTo(Block block, int position, BlockBuilder blockBuilder) { if (block.isNull(position)) { blockBuilder.appendNull(); } else { blockBuilder.writeByte(block.getByte(position, 0)).closeEntry(); } }
@Test public void testByteArrayBlock() { BlockBuilder blockBuilder = new ByteArrayBlockBuilder(null, EXPECTED_ENTRIES); for (int i = 0; i < EXPECTED_ENTRIES; i++) { blockBuilder.writeByte(i); } checkRetainedSize(blockBuilder.build(), false); }
@Test public void testByteArrayBlock() { BlockBuilder blockBuilder = new ByteArrayBlockBuilder(null, EXPECTED_ENTRIES); for (int i = 0; i < EXPECTED_ENTRIES; i++) { blockBuilder.writeByte(i); } checkRetainedSize(blockBuilder.build(), false); }
@Test public void testNewBlockBuilderLike() { int entries = 12345; double resetSkew = 1.25; BlockBuilder blockBuilder = new VariableWidthBlockBuilder(null, entries, entries); for (int i = 0; i < entries; i++) { blockBuilder.writeByte(i); blockBuilder.closeEntry(); } blockBuilder = blockBuilder.newBlockBuilderLike(null); // force to initialize capacity blockBuilder.writeByte(1); long actualArrayBytes = sizeOf(new int[(int) ceil(resetSkew * (entries + 1))]) + sizeOf(new boolean[(int) ceil(resetSkew * entries)]); long actualSliceBytes = SLICE_INSTANCE_SIZE + sizeOf(new byte[(int) ceil(resetSkew * entries)]); assertEquals(blockBuilder.getRetainedSizeInBytes(), BLOCK_BUILDER_INSTANCE_SIZE + actualSliceBytes + actualArrayBytes); }
@Test public void testNewBlockBuilderLike() { int entries = 12345; double resetSkew = 1.25; BlockBuilder blockBuilder = new VariableWidthBlockBuilder(null, entries, entries); for (int i = 0; i < entries; i++) { blockBuilder.writeByte(i); blockBuilder.closeEntry(); } blockBuilder = blockBuilder.newBlockBuilderLike(null); // force to initialize capacity blockBuilder.writeByte(1); long actualArrayBytes = sizeOf(new int[(int) ceil(resetSkew * (entries + 1))]) + sizeOf(new boolean[(int) ceil(resetSkew * entries)]); long actualSliceBytes = SLICE_INSTANCE_SIZE + sizeOf(new byte[(int) ceil(resetSkew * entries)]); assertEquals(blockBuilder.getRetainedSizeInBytes(), BLOCK_BUILDER_INSTANCE_SIZE + actualSliceBytes + actualArrayBytes); }
private static void writeValues(Slice[] expectedValues, BlockBuilder blockBuilder) { for (Slice expectedValue : expectedValues) { if (expectedValue == null) { blockBuilder.appendNull(); } else { blockBuilder.writeByte(expectedValue.getByte(0)).closeEntry(); } } }
private static void writeValues(Slice[] expectedValues, BlockBuilder blockBuilder) { for (Slice expectedValue : expectedValues) { if (expectedValue == null) { blockBuilder.appendNull(); } else { blockBuilder.writeByte(expectedValue.getByte(0)).closeEntry(); } } }