/** * Sets the vector element to true if the bit is set. */ public void getSetBits(Type type, int batchSize, BlockBuilder builder) throws IOException { for (int i = 0; i < batchSize; i++) { type.writeBoolean(builder, nextBit()); } }
@Override void writeFirstField(BlockBuilder out, BooleanAndBlockPositionValueState state) { firstType.writeBoolean(out, state.getFirst()); } }
@Override public void decodeValueInto(BlockBuilder builder, Slice slice, int offset, int length) { type.writeBoolean(builder, slice.getByte(offset) != 0); } }
@Override public void decodeValueInto(int depth, BlockBuilder builder, Slice slice, int offset, int length) { type.writeBoolean(builder, isTrue(slice, offset, length)); }
public static void providedBlockBoolean(Type type, BlockBuilder output, boolean value) { hitProvidedBlockBuilderBoolean.incrementAndGet(); type.writeBoolean(output, value); }
static void write(Type type, TriStateBooleanState state, BlockBuilder out) { if (state.getByte() == NULL_VALUE) { out.appendNull(); } else { type.writeBoolean(out, state.getByte() == TRUE_VALUE); } } }
static void write(Type type, NullableBooleanState state, BlockBuilder out) { if (state.isNull()) { out.appendNull(); } else { type.writeBoolean(out, state.getBoolean()); } } }
public static void providedBlockBoolean(Type type, BlockBuilder output, Boolean value) { hitProvidedBlockBuilderBoolean.incrementAndGet(); if (value == null) { output.appendNull(); } else { type.writeBoolean(output, value); } }
@Override protected void readValue(BlockBuilder blockBuilder, Type type) { if (definitionLevel == columnDescriptor.getMaxDefinitionLevel()) { type.writeBoolean(blockBuilder, valuesReader.readBoolean()); } else if (isValueNull()) { blockBuilder.appendNull(); } }
private static void serializeGeneric(BlockBuilder blockBuilder, Object value, Type type, String columnName) { requireNonNull(blockBuilder, "parent blockBuilder is null"); if (value == null) { blockBuilder.appendNull(); return; } switch (type.getTypeSignature().getBase()) { case BOOLEAN: type.writeBoolean(blockBuilder, (Boolean) value); break; case BIGINT: type.writeLong(blockBuilder, (Long) value); break; case DOUBLE: type.writeDouble(blockBuilder, (Double) value); break; case VARCHAR: case VARBINARY: type.writeSlice(blockBuilder, getSlice(value, type, columnName)); break; default: throw new PrestoException(DECODER_CONVERSION_NOT_SUPPORTED, format("cannot decode object of '%s' as '%s' for column '%s'", value.getClass(), type, columnName)); } }
@UsedByGeneratedCode public static Block prependElement(Type elementType, boolean value, Block block) { BlockBuilder blockBuilder = elementType.createBlockBuilder(null, block.getPositionCount() + 1); elementType.writeBoolean(blockBuilder, value); for (int i = 0; i < block.getPositionCount(); i++) { elementType.appendTo(block, i, blockBuilder); } return blockBuilder.build(); }
@UsedByGeneratedCode public static Block appendElement(Type elementType, Block block, boolean value) { BlockBuilder blockBuilder = elementType.createBlockBuilder(null, block.getPositionCount() + 1); for (int i = 0; i < block.getPositionCount(); i++) { elementType.appendTo(block, i, blockBuilder); } elementType.writeBoolean(blockBuilder, value); return blockBuilder.build(); }
@Override public Block decodeColumn(ColumnData columnData) { int size = columnData.rowCount(); BlockBuilder builder = type.createBlockBuilder(null, size); Slice slice = columnData.getSlice(); for (int i = 0; i < size; i++) { int offset = columnData.getOffset(i); int length = columnData.getLength(i); if (isTrue(slice, offset, length)) { type.writeBoolean(builder, true); } else if (isFalse(slice, offset, length)) { type.writeBoolean(builder, false); } else { builder.appendNull(); } } return builder.build(); }
@Override public Block decodeColumn(ColumnData columnData) { int size = columnData.rowCount(); BlockBuilder builder = type.createBlockBuilder(null, size); Slice slice = columnData.getSlice(); for (int i = 0; i < size; i++) { int length = columnData.getLength(i); if (length != 0) { checkState(length == SIZE_OF_BYTE, "Bytes should be 1 byte"); type.writeBoolean(builder, slice.getByte(columnData.getOffset(i)) != 0); } else { builder.appendNull(); } } return builder.build(); }
private static Block createChannel(int arraySize, Type elementType) { BlockBuilder blockBuilder = elementType.createBlockBuilder(null, arraySize); for (int i = 0; i < arraySize; i++) { if (elementType.getJavaType() == long.class) { elementType.writeLong(blockBuilder, (long) i); } else if (elementType.getJavaType() == double.class) { elementType.writeDouble(blockBuilder, ThreadLocalRandom.current().nextDouble()); } else if (elementType.getJavaType() == boolean.class) { elementType.writeBoolean(blockBuilder, ThreadLocalRandom.current().nextBoolean()); } else if (elementType.equals(VARCHAR)) { // make sure the size of a varchar is rather small; otherwise the aggregated slice may overflow elementType.writeSlice(blockBuilder, Slices.utf8Slice(Long.toString(ThreadLocalRandom.current().nextLong() % 100))); } else { throw new UnsupportedOperationException(); } } return blockBuilder.build(); }
private static Block createChannel(int positionCount, int arraySize, Type elementType) { ArrayType arrayType = new ArrayType(elementType); BlockBuilder blockBuilder = arrayType.createBlockBuilder(null, positionCount); for (int position = 0; position < positionCount; position++) { BlockBuilder entryBuilder = blockBuilder.beginBlockEntry(); for (int i = 0; i < arraySize; i++) { if (elementType.getJavaType() == long.class) { elementType.writeLong(entryBuilder, ThreadLocalRandom.current().nextLong() % arraySize); } else if (elementType.getJavaType() == double.class) { elementType.writeDouble(entryBuilder, ThreadLocalRandom.current().nextDouble() % arraySize); } else if (elementType.getJavaType() == boolean.class) { elementType.writeBoolean(entryBuilder, ThreadLocalRandom.current().nextBoolean()); } else if (elementType.equals(VARCHAR)) { // make sure the size of a varchar is rather small; otherwise the aggregated slice may overflow elementType.writeSlice(entryBuilder, Slices.utf8Slice(Long.toString(ThreadLocalRandom.current().nextLong() % arraySize))); } else { throw new UnsupportedOperationException(); } } blockBuilder.closeEntry(); } return blockBuilder.build(); }
@TypeParameter("T") @SqlType("array(T)") public static Block repeat( @TypeParameter("T") Type type, @SqlNullable @SqlType("T") Boolean element, @SqlType(StandardTypes.INTEGER) long count) { BlockBuilder blockBuilder = createBlockBuilder(type, count); if (element == null) { return repeatNullValues(blockBuilder, count); } for (int i = 0; i < count; i++) { type.writeBoolean(blockBuilder, element); } return blockBuilder.build(); }
private static Block createChannel(int positionCount, int arraySize, ArrayType arrayType) { BlockBuilder blockBuilder = arrayType.createBlockBuilder(null, positionCount); for (int position = 0; position < positionCount; position++) { BlockBuilder entryBuilder = blockBuilder.beginBlockEntry(); for (int i = 0; i < arraySize; i++) { if (arrayType.getElementType().getJavaType() == long.class) { arrayType.getElementType().writeLong(entryBuilder, ThreadLocalRandom.current().nextLong()); } else if (arrayType.getElementType().getJavaType() == double.class) { arrayType.getElementType().writeDouble(entryBuilder, ThreadLocalRandom.current().nextDouble()); } else if (arrayType.getElementType().getJavaType() == boolean.class) { arrayType.getElementType().writeBoolean(entryBuilder, ThreadLocalRandom.current().nextBoolean()); } else if (arrayType.getElementType().equals(VARCHAR)) { arrayType.getElementType().writeSlice(entryBuilder, Slices.utf8Slice("test_string")); } else { throw new UnsupportedOperationException(); } } blockBuilder.closeEntry(); } return blockBuilder.build(); }
private static Block createBlock(Type type, Object value) { BlockBuilder blockBuilder = type.createBlockBuilder(null, 1); Class<?> javaType = type.getJavaType(); if (value == null) { blockBuilder.appendNull(); } else if (javaType == boolean.class) { type.writeBoolean(blockBuilder, (Boolean) value); } else if (javaType == long.class) { type.writeLong(blockBuilder, (Long) value); } else if (javaType == double.class) { type.writeDouble(blockBuilder, (Double) value); } else if (javaType == Slice.class) { Slice slice = (Slice) value; type.writeSlice(blockBuilder, slice, 0, slice.length()); } else { type.writeObject(blockBuilder, value); } return blockBuilder.build(); }
private Block toBlock(Object value) { BlockBuilder blockBuilder = type.createBlockBuilder(null, 1); Class<?> javaType = type.getJavaType(); if (value == null) { blockBuilder.appendNull(); } else if (javaType == boolean.class) { type.writeBoolean(blockBuilder, (Boolean) value); } else if (javaType == long.class) { type.writeLong(blockBuilder, (Long) value); } else if (javaType == double.class) { type.writeDouble(blockBuilder, (Double) value); } else if (javaType == Slice.class) { Slice slice = (Slice) value; type.writeSlice(blockBuilder, slice, 0, slice.length()); } else { type.writeObject(blockBuilder, value); } return blockBuilder.build(); }