@Override public BlockBuilder createFixedSizeBlockBuilder(int positionCount) { return new FixedWidthBlockBuilder(getFixedSize(), positionCount); }
@Override public BlockBuilder createBlockBuilder(BlockBuilderStatus blockBuilderStatus, int expectedEntries) { return createBlockBuilder(blockBuilderStatus, expectedEntries, getFixedSize()); }
@Override public Slice getSlice(Block block, int position) { return block.getSlice(position, 0, getFixedSize()); } }
@Override public BlockBuilder createBlockBuilder(BlockBuilderStatus blockBuilderStatus, int expectedEntries, int expectedBytesPerEntry) { int maxBlockSizeInBytes; if (blockBuilderStatus == null) { maxBlockSizeInBytes = PageBuilderStatus.DEFAULT_MAX_PAGE_SIZE_IN_BYTES; } else { maxBlockSizeInBytes = blockBuilderStatus.getMaxPageSizeInBytes(); } return new FixedWidthBlockBuilder( getFixedSize(), blockBuilderStatus, Math.min(expectedEntries, maxBlockSizeInBytes / getFixedSize())); }
@Override public void appendTo(Block block, int position, BlockBuilder blockBuilder) { if (block.isNull(position)) { blockBuilder.appendNull(); } else { block.writeBytesTo(position, 0, getFixedSize(), blockBuilder); blockBuilder.closeEntry(); } }
@Override public Object getObjectValue(ConnectorSession session, Block block, int position) { if (block.isNull(position)) { return null; } Slice slice = block.getSlice(position, 0, getFixedSize()); return new SqlDecimal(decodeUnscaledValue(slice), getPrecision(), getScale()); }
@Override public BlockBuilder createBlockBuilder(BlockBuilderStatus blockBuilderStatus, int expectedEntries) { return createBlockBuilder(blockBuilderStatus, expectedEntries, getFixedSize()); }
@Override public BlockBuilder createFixedSizeBlockBuilder(int positionCount) { return new FixedWidthBlockBuilder(getFixedSize(), positionCount); }
@Override public Slice getSlice(Block block, int position) { return block.getSlice(position, 0, getFixedSize()); } }
@Override public BlockBuilder createBlockBuilder(BlockBuilderStatus blockBuilderStatus, int expectedEntries, int expectedBytesPerEntry) { int maxBlockSizeInBytes; if (blockBuilderStatus == null) { maxBlockSizeInBytes = PageBuilderStatus.DEFAULT_MAX_PAGE_SIZE_IN_BYTES; } else { maxBlockSizeInBytes = blockBuilderStatus.getMaxPageSizeInBytes(); } return new FixedWidthBlockBuilder( getFixedSize(), blockBuilderStatus, Math.min(expectedEntries, maxBlockSizeInBytes / getFixedSize())); }
@Override public void appendTo(Block block, int position, BlockBuilder blockBuilder) { if (block.isNull(position)) { blockBuilder.appendNull(); } else { block.writeBytesTo(position, 0, getFixedSize(), blockBuilder); blockBuilder.closeEntry(); } }
@Override public Object getObjectValue(ConnectorSession session, Block block, int position) { if (block.isNull(position)) { return null; } Slice slice = block.getSlice(position, 0, getFixedSize()); return new SqlDecimal(decodeUnscaledValue(slice), getPrecision(), getScale()); }