use of com.facebook.presto.thrift.api.datatypes.PrestoThriftBlock in project presto by prestodb.
the class PrestoThriftEquatableValueSet method fromEquatableValueSet.
public static PrestoThriftEquatableValueSet fromEquatableValueSet(EquatableValueSet valueSet) {
Type type = valueSet.getType();
Set<ValueEntry> values = valueSet.getEntries();
List<PrestoThriftBlock> thriftValues = new ArrayList<>(values.size());
for (ValueEntry value : values) {
checkState(type.equals(value.getType()), "ValueEntrySet has elements of different types: %s vs %s", type, value.getType());
thriftValues.add(fromBlock(value.getBlock(), type));
}
return new PrestoThriftEquatableValueSet(valueSet.isWhiteList(), thriftValues);
}
use of com.facebook.presto.thrift.api.datatypes.PrestoThriftBlock in project presto by prestodb.
the class ThriftSqlFunctionExecutor method buildThriftPage.
private ThriftUdfPage buildThriftPage(RemoteScalarFunctionImplementation functionImplementation, Page input, List<Integer> channels, List<Type> argumentTypes) {
ThriftUdfPageFormat pageFormat = executionConfigs.get(functionImplementation.getLanguage()).getThriftPageFormat();
Block[] blocks = new Block[channels.size()];
for (int i = 0; i < channels.size(); i++) {
blocks[i] = input.getBlock(channels.get(i));
}
switch(pageFormat) {
case PRESTO_THRIFT:
ImmutableList.Builder<PrestoThriftBlock> thriftBlocks = ImmutableList.builder();
for (int i = 0; i < blocks.length; i++) {
thriftBlocks.add(PrestoThriftBlock.fromBlock(blocks[i], argumentTypes.get(i)));
}
return thriftPage(new PrestoThriftPage(thriftBlocks.build(), input.getPositionCount()));
case PRESTO_SERIALIZED:
checkState(blockEncodingSerde != null, "blockEncodingSerde not set");
PagesSerde pagesSerde = new PagesSerde(blockEncodingSerde, Optional.empty(), Optional.empty(), Optional.empty());
return prestoPage(pagesSerde.serialize(wrapBlocksWithoutCopy(input.getPositionCount(), blocks)));
default:
throw new IllegalArgumentException(format("Unknown page format: %s", pageFormat));
}
}
use of com.facebook.presto.thrift.api.datatypes.PrestoThriftBlock in project presto by prestodb.
the class ThriftIndexedTpchService method thriftPageToList.
private static List<List<String>> thriftPageToList(PrestoThriftPageResult page, int begin, int end) {
checkArgument(begin <= end, "invalid interval");
if (begin == end) {
// empty interval
return ImmutableList.of();
}
List<PrestoThriftBlock> blocks = page.getColumnBlocks();
List<List<String>> result = new ArrayList<>(blocks.size());
for (PrestoThriftBlock block : blocks) {
result.add(blockAsList(block, begin, end));
}
return result;
}
Aggregations