Search in sources :

Example 11 with BlockBuilder

use of com.facebook.presto.spi.block.BlockBuilder in project presto by prestodb.

the class TypeUtils method getHashBlock.

public static Block getHashBlock(List<? extends Type> hashTypes, Block... hashBlocks) {
    checkArgument(hashTypes.size() == hashBlocks.length);
    int[] hashChannels = new int[hashBlocks.length];
    for (int i = 0; i < hashBlocks.length; i++) {
        hashChannels[i] = i;
    }
    HashGenerator hashGenerator = new InterpretedHashGenerator(ImmutableList.copyOf(hashTypes), hashChannels);
    int positionCount = hashBlocks[0].getPositionCount();
    BlockBuilder builder = BIGINT.createFixedSizeBlockBuilder(positionCount);
    Page page = new Page(hashBlocks);
    for (int i = 0; i < positionCount; i++) {
        BIGINT.writeLong(builder, hashGenerator.hashPosition(i, page));
    }
    return builder.build();
}
Also used : InterpretedHashGenerator(com.facebook.presto.operator.InterpretedHashGenerator) Page(com.facebook.presto.spi.Page) HashGenerator(com.facebook.presto.operator.HashGenerator) InterpretedHashGenerator(com.facebook.presto.operator.InterpretedHashGenerator) BlockBuilder(com.facebook.presto.spi.block.BlockBuilder)

Example 12 with BlockBuilder

use of com.facebook.presto.spi.block.BlockBuilder in project presto by prestodb.

the class MaterializedResult method appendToPage.

private static void appendToPage(PageBuilder pageBuilder, MaterializedRow row) {
    for (int field = 0; field < row.getFieldCount(); field++) {
        Type type = pageBuilder.getType(field);
        Object value = row.getField(field);
        BlockBuilder blockBuilder = pageBuilder.getBlockBuilder(field);
        writeValue(type, blockBuilder, value);
    }
    pageBuilder.declarePosition();
}
Also used : RowType(com.facebook.presto.type.RowType) ArrayType(com.facebook.presto.type.ArrayType) MapType(com.facebook.presto.type.MapType) Type(com.facebook.presto.spi.type.Type) CharType(com.facebook.presto.spi.type.CharType) VarcharType(com.facebook.presto.spi.type.VarcharType) BlockBuilder(com.facebook.presto.spi.block.BlockBuilder)

Example 13 with BlockBuilder

use of com.facebook.presto.spi.block.BlockBuilder in project presto by prestodb.

the class RowPageBuilder method append.

private void append(int channel, Object element) {
    BlockBuilder blockBuilder = builders.get(channel);
    Type type = types.get(channel);
    appendToBlockBuilder(type, element, blockBuilder);
}
Also used : Type(com.facebook.presto.spi.type.Type) BlockBuilder(com.facebook.presto.spi.block.BlockBuilder) TypeJsonUtils.appendToBlockBuilder(com.facebook.presto.type.TypeJsonUtils.appendToBlockBuilder)

Example 14 with BlockBuilder

use of com.facebook.presto.spi.block.BlockBuilder in project presto by prestodb.

the class BlockAssertions method createRLEBlock.

public static RunLengthEncodedBlock createRLEBlock(double value, int positionCount) {
    BlockBuilder blockBuilder = DOUBLE.createBlockBuilder(new BlockBuilderStatus(), 1);
    DOUBLE.writeDouble(blockBuilder, value);
    return new RunLengthEncodedBlock(blockBuilder.build(), positionCount);
}
Also used : RunLengthEncodedBlock(com.facebook.presto.spi.block.RunLengthEncodedBlock) BlockBuilder(com.facebook.presto.spi.block.BlockBuilder) BlockBuilderStatus(com.facebook.presto.spi.block.BlockBuilderStatus)

Example 15 with BlockBuilder

use of com.facebook.presto.spi.block.BlockBuilder in project presto by prestodb.

the class BlockAssertions method createShortDecimalsBlock.

public static Block createShortDecimalsBlock(Iterable<String> values) {
    DecimalType shortDecimalType = DecimalType.createDecimalType(1);
    BlockBuilder builder = shortDecimalType.createBlockBuilder(new BlockBuilderStatus(), 100);
    for (String value : values) {
        if (value == null) {
            builder.appendNull();
        } else {
            shortDecimalType.writeLong(builder, new BigDecimal(value).unscaledValue().longValue());
        }
    }
    return builder.build();
}
Also used : DecimalType(com.facebook.presto.spi.type.DecimalType) Decimals.writeBigDecimal(com.facebook.presto.spi.type.Decimals.writeBigDecimal) BigDecimal(java.math.BigDecimal) BlockBuilder(com.facebook.presto.spi.block.BlockBuilder) BlockBuilderStatus(com.facebook.presto.spi.block.BlockBuilderStatus)

Aggregations

BlockBuilder (com.facebook.presto.spi.block.BlockBuilder)290 BlockBuilderStatus (com.facebook.presto.spi.block.BlockBuilderStatus)211 Block (com.facebook.presto.spi.block.Block)56 Slice (io.airlift.slice.Slice)53 InterleavedBlockBuilder (com.facebook.presto.spi.block.InterleavedBlockBuilder)39 Test (org.testng.annotations.Test)38 Type (com.facebook.presto.spi.type.Type)33 SqlType (com.facebook.presto.spi.function.SqlType)24 ArrayType (com.facebook.presto.type.ArrayType)19 Page (com.facebook.presto.spi.Page)18 UsedByGeneratedCode (com.facebook.presto.annotation.UsedByGeneratedCode)17 TypeParameter (com.facebook.presto.spi.function.TypeParameter)15 MapType (com.facebook.presto.type.MapType)14 RowType (com.facebook.presto.type.RowType)14 TypeJsonUtils.appendToBlockBuilder (com.facebook.presto.type.TypeJsonUtils.appendToBlockBuilder)13 PageBuilder (com.facebook.presto.spi.PageBuilder)12 ImmutableList (com.google.common.collect.ImmutableList)12 PrestoException (com.facebook.presto.spi.PrestoException)11 RunLengthEncodedBlock (com.facebook.presto.spi.block.RunLengthEncodedBlock)11 DictionaryBlock (com.facebook.presto.spi.block.DictionaryBlock)10