当前位置: 首页>>代码示例>>Java>>正文


Java Block.getPositionCount方法代码示例

本文整理汇总了Java中com.facebook.presto.spi.block.Block.getPositionCount方法的典型用法代码示例。如果您正苦于以下问题:Java Block.getPositionCount方法的具体用法?Java Block.getPositionCount怎么用?Java Block.getPositionCount使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.facebook.presto.spi.block.Block的用法示例。


在下文中一共展示了Block.getPositionCount方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: subscript

import com.facebook.presto.spi.block.Block; //导入方法依赖的package包/类
@UsedByGeneratedCode
public static Object subscript(MethodHandle keyEqualsMethod, Type keyType, Type valueType, Block map, Slice key)
{
    for (int position = 0; position < map.getPositionCount(); position += 2) {
        try {
            if ((boolean) keyEqualsMethod.invokeExact(keyType.getSlice(map, position), key)) {
                return readNativeValue(valueType, map, position + 1); // position + 1: value position
            }
        }
        catch (Throwable t) {
            Throwables.propagateIfInstanceOf(t, Error.class);
            Throwables.propagateIfInstanceOf(t, PrestoException.class);
            throw new PrestoException(INTERNAL_ERROR, t);
        }
    }
    return null;
}
 
开发者ID:y-lan,项目名称:presto,代码行数:18,代码来源:MapSubscriptOperator.java

示例2: contains

import com.facebook.presto.spi.block.Block; //导入方法依赖的package包/类
public static Boolean contains(Type elementType, MethodHandle equals, Block arrayBlock, double value)
{
    boolean foundNull = false;
    for (int i = 0; i < arrayBlock.getPositionCount(); i++) {
        if (arrayBlock.isNull(i)) {
            foundNull = true;
            continue;
        }
        try {
            if ((boolean) equals.invokeExact(elementType.getDouble(arrayBlock, i), value)) {
                return true;
            }
        }
        catch (Throwable t) {
            Throwables.propagateIfInstanceOf(t, Error.class);
            Throwables.propagateIfInstanceOf(t, PrestoException.class);

            throw new PrestoException(INTERNAL_ERROR, t);
        }
    }
    if (foundNull) {
        return null;
    }
    return false;
}
 
开发者ID:y-lan,项目名称:presto,代码行数:26,代码来源:ArrayContains.java

示例3: checkedIndexToBlockPosition

import com.facebook.presto.spi.block.Block; //导入方法依赖的package包/类
private static int checkedIndexToBlockPosition(Block block, long index)
{
    int arrayLength = block.getPositionCount();
    if (index == 0) {
        throw new PrestoException(INVALID_FUNCTION_ARGUMENT, "SQL array indices start at 1");
    }
    if (Math.abs(index) > arrayLength) {
        throw new PrestoException(INVALID_FUNCTION_ARGUMENT, "Array subscript out of bounds");
    }

    if (index > 0) {
        return Ints.checkedCast(index - 1);
    }
    else {
        return Ints.checkedCast(arrayLength + index);
    }
}
 
开发者ID:y-lan,项目名称:presto,代码行数:18,代码来源:ArrayElementAtFunction.java

示例4: indexStackValues

import com.facebook.presto.spi.block.Block; //导入方法依赖的package包/类
private static SortedMap<Integer, Object> indexStackValues(Type type, Block block)
{
    SortedMap<Integer, Object> values = new TreeMap<>();
    for (int position = 0; position < block.getPositionCount(); position++) {
        if (block.isNull(position)) {
            values.put(position, null);
        }
        else if (type.getJavaType() == boolean.class) {
            values.put(position, type.getBoolean(block, position));
        }
        else if (type.getJavaType() == long.class) {
            values.put(position, type.getLong(block, position));
        }
        else if (type.getJavaType() == double.class) {
            values.put(position, type.getDouble(block, position));
        }
        else if (type.getJavaType() == Slice.class) {
            values.put(position, type.getSlice(block, position));
        }
        else {
            values.put(position, type.getObject(block, position));
        }
    }
    return unmodifiableSortedMap(values);
}
 
开发者ID:y-lan,项目名称:presto,代码行数:26,代码来源:AbstractTestType.java

示例5: contains

import com.facebook.presto.spi.block.Block; //导入方法依赖的package包/类
@TypeParameter(StandardTypes.DOUBLE)
@SqlType(StandardTypes.BOOLEAN)
@Nullable
public static Boolean contains(
        @TypeParameter(StandardTypes.DOUBLE) Type elementType,
        @SqlType("array(double)") Block arrayBlock,
        @SqlType(StandardTypes.DOUBLE) double lng,
        @SqlType(StandardTypes.DOUBLE) double lat)
{
    double[] array= new double[arrayBlock.getPositionCount()] ;
    Polygon poly = new Polygon();

    for (int i = 0; i < arrayBlock.getPositionCount(); i++) {

        if (arrayBlock.isNull(i)) {
            continue;
        }
        array[i]=elementType.getDouble(arrayBlock, i);

    }

    poly.startPath(array[0], array[1]);
    for (int i = 2; i < array.length; i += 2) {
        poly.lineTo(array[i], array[i + 1]);
    }
    return OperatorContains.local().execute(poly, new Point(lng,lat), null, null);
}
 
开发者ID:Cuebiq,项目名称:presto-cuebiq-functions,代码行数:28,代码来源:PolyContains.java

示例6: appendElement

import com.facebook.presto.spi.block.Block; //导入方法依赖的package包/类
@UsedByGeneratedCode
public static Block appendElement(Type elementType, Block block, Slice value)
{
    BlockBuilder blockBuilder = elementType.createBlockBuilder(new BlockBuilderStatus(), block.getPositionCount() + 1);
    for (int i = 0; i < block.getPositionCount(); i++) {
        elementType.appendTo(block, i, blockBuilder);
    }

    elementType.writeSlice(blockBuilder, value);

    return blockBuilder.build();
}
 
开发者ID:y-lan,项目名称:presto,代码行数:13,代码来源:ArrayConcatUtils.java

示例7: equalTo

import com.facebook.presto.spi.block.Block; //导入方法依赖的package包/类
@Override
public boolean equalTo(Block leftBlock, int leftPosition, Block rightBlock, int rightPosition)
{
    Block leftMapBlock = leftBlock.getObject(leftPosition, Block.class);
    Block rightMapBlock = rightBlock.getObject(rightPosition, Block.class);

    if (leftMapBlock.getPositionCount() != rightMapBlock.getPositionCount()) {
        return false;
    }

    Map<KeyWrapper, Integer> wrappedLeftMap = new HashMap<>();
    for (int position = 0; position < leftMapBlock.getPositionCount(); position += 2) {
        wrappedLeftMap.put(new KeyWrapper(keyType, leftMapBlock, position), position + 1);
    }

    for (int position = 0; position < rightMapBlock.getPositionCount(); position += 2) {
        KeyWrapper key = new KeyWrapper(keyType, rightMapBlock, position);
        Integer leftValuePosition = wrappedLeftMap.get(key);
        if (leftValuePosition == null) {
            return false;
        }
        int rightValuePosition = position + 1;
        checkElementNotNull(leftMapBlock.isNull(leftValuePosition), MAP_NULL_ELEMENT_MSG);
        checkElementNotNull(rightMapBlock.isNull(rightValuePosition), MAP_NULL_ELEMENT_MSG);

        if (!valueType.equalTo(leftMapBlock, leftValuePosition, rightMapBlock, rightValuePosition)) {
            return false;
        }
    }
    return true;
}
 
开发者ID:y-lan,项目名称:presto,代码行数:32,代码来源:MapType.java

示例8: getKeys

import com.facebook.presto.spi.block.Block; //导入方法依赖的package包/类
public static Block getKeys(Type keyType, Block block)
{
    BlockBuilder blockBuilder = keyType.createBlockBuilder(new BlockBuilderStatus(), block.getPositionCount() / 2);
    for (int i = 0; i < block.getPositionCount(); i += 2) {
        keyType.appendTo(block, i, blockBuilder);
    }
    return blockBuilder.build();
}
 
开发者ID:y-lan,项目名称:presto,代码行数:9,代码来源:MapKeys.java

示例9: toJson

import com.facebook.presto.spi.block.Block; //导入方法依赖的package包/类
public static Slice toJson(Type arrayType, ConnectorSession session, Block array)
{
    Type elementType = arrayType.getTypeParameters().get(0);
    List<Object> objectValues = new ArrayList<>(array.getPositionCount());
    for (int i = 0; i < array.getPositionCount(); i++) {
        objectValues.add(elementType.getObjectValue(session, array, i));
    }
    try {
        return Slices.utf8Slice(OBJECT_MAPPER.get().writeValueAsString(objectValues));
    }
    catch (JsonProcessingException e) {
        throw Throwables.propagate(e);
    }
}
 
开发者ID:y-lan,项目名称:presto,代码行数:15,代码来源:ArrayToJsonCast.java

示例10: initializePercentilesArray

import com.facebook.presto.spi.block.Block; //导入方法依赖的package包/类
private static void initializePercentilesArray(DigestAndPercentileArrayState state, Block percentilesArrayBlock)
{
    if (state.getPercentiles() == null) {
        ImmutableList.Builder<Double> percentilesListBuilder = ImmutableList.builder();

        for (int i = 0; i < percentilesArrayBlock.getPositionCount(); i++) {
            checkCondition(!percentilesArrayBlock.isNull(i), INVALID_FUNCTION_ARGUMENT, "Percentile cannot be null");
            double percentile = DOUBLE.getDouble(percentilesArrayBlock, i);
            checkCondition(0 <= percentile && percentile <= 1, INVALID_FUNCTION_ARGUMENT, "Percentile must be between 0 and 1");
            percentilesListBuilder.add(percentile);
        }

        state.setPercentiles(percentilesListBuilder.build());
    }
}
 
开发者ID:y-lan,项目名称:presto,代码行数:16,代码来源:ApproximateLongPercentileArrayAggregations.java

示例11: addInput

import com.facebook.presto.spi.block.Block; //导入方法依赖的package包/类
@Override
public void addInput(Page page)
{
    requireNonNull(page, "page is null");
    checkState(state == State.RUNNING, "Operator is %s", state);

    Block rowIds = page.getBlock(rowIdChannel);
    pageSource().deleteRows(rowIds);
    rowCount += rowIds.getPositionCount();
}
 
开发者ID:y-lan,项目名称:presto,代码行数:11,代码来源:DeleteOperator.java

示例12: toMultimapNativeEncoding

import com.facebook.presto.spi.block.Block; //导入方法依赖的package包/类
/**
 * Serialize as a multimap: map<key, array<value>>, each key can be associated with multiple values
 */
public Block toMultimapNativeEncoding()
{
    if (!isMultiValue) {
        throw new PrestoException(INTERNAL_ERROR, "This KeyValuePairs is not multimap.");
    }

    Block keys = keyBlockBuilder.build();
    Block values = valueBlockBuilder.build();

    // Merge values of the same key into an array
    BlockBuilder distinctKeyBlockBuilder = keyType.createBlockBuilder(new BlockBuilderStatus(), keys.getPositionCount(), expectedValueSize(keyType, EXPECTED_ENTRY_SIZE));
    ObjectBigArray<BlockBuilder> valueArrayBlockBuilders = new ObjectBigArray<>();
    valueArrayBlockBuilders.ensureCapacity(keys.getPositionCount());
    TypedSet keySet = new TypedSet(keyType, keys.getPositionCount());
    for (int keyValueIndex = 0; keyValueIndex < keys.getPositionCount(); keyValueIndex++) {
        if (!keySet.contains(keys, keyValueIndex)) {
            keySet.add(keys, keyValueIndex);
            keyType.appendTo(keys, keyValueIndex, distinctKeyBlockBuilder);
            BlockBuilder valueArrayBuilder = valueType.createBlockBuilder(new BlockBuilderStatus(), 10, expectedValueSize(valueType, EXPECTED_ENTRY_SIZE));
            valueArrayBlockBuilders.set(keySet.positionOf(keys, keyValueIndex), valueArrayBuilder);
        }
        valueType.appendTo(values, keyValueIndex, valueArrayBlockBuilders.get(keySet.positionOf(keys, keyValueIndex)));
    }

    // Write keys and value arrays into one Block
    Block distinctKeys = distinctKeyBlockBuilder.build();
    Type valueArrayType = new ArrayType(valueType);
    BlockBuilder multimapBlockBuilder = new InterleavedBlockBuilder(ImmutableList.of(keyType, valueArrayType), new BlockBuilderStatus(), distinctKeyBlockBuilder.getPositionCount());
    for (int i = 0; i < distinctKeys.getPositionCount(); i++) {
        keyType.appendTo(distinctKeys, i, multimapBlockBuilder);
        valueArrayType.writeObject(multimapBlockBuilder, valueArrayBlockBuilders.get(i).build());
    }

    return multimapBlockBuilder.build();
}
 
开发者ID:y-lan,项目名称:presto,代码行数:39,代码来源:KeyValuePairs.java

示例13: createPageWithExtractedDictionary

import com.facebook.presto.spi.block.Block; //导入方法依赖的package包/类
private Page createPageWithExtractedDictionary(Page page)
{
    Block[] blocks = new Block[page.getChannelCount()];
    Block dictionary = ((DictionaryBlock) page.getBlock(channels[0])).getDictionary();

    // extract data dictionary
    blocks[channels[0]] = dictionary;

    // extract hash dictionary
    if (inputHashChannel.isPresent()) {
        blocks[inputHashChannel.get()] = ((DictionaryBlock) page.getBlock(inputHashChannel.get())).getDictionary();
    }

    return new Page(dictionary.getPositionCount(), blocks);
}
 
开发者ID:y-lan,项目名称:presto,代码行数:16,代码来源:MultiChannelGroupByHash.java

示例14: prependElement

import com.facebook.presto.spi.block.Block; //导入方法依赖的package包/类
@UsedByGeneratedCode
public static Block prependElement(Type elementType, Object value, Block block)
{
    BlockBuilder blockBuilder = elementType.createBlockBuilder(new BlockBuilderStatus(), block.getPositionCount() + 1);

    elementType.writeObject(blockBuilder, value);
    for (int i = 0; i < block.getPositionCount(); i++) {
        elementType.appendTo(block, i, blockBuilder);
    }

    return blockBuilder.build();
}
 
开发者ID:y-lan,项目名称:presto,代码行数:13,代码来源:ArrayConcatUtils.java

示例15: toValues

import com.facebook.presto.spi.block.Block; //导入方法依赖的package包/类
public static List<Object> toValues(Type type, Block block)
{
    List<Object> values = new ArrayList<>();
    for (int position = 0; position < block.getPositionCount(); position++) {
        values.add(type.getObjectValue(SESSION, block, position));
    }
    return Collections.unmodifiableList(values);
}
 
开发者ID:y-lan,项目名称:presto,代码行数:9,代码来源:BlockAssertions.java


注:本文中的com.facebook.presto.spi.block.Block.getPositionCount方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。