本文整理汇总了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;
}
示例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;
}
示例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);
}
}
示例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);
}
示例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);
}
示例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();
}
示例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;
}
示例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();
}
示例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);
}
}
示例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());
}
}
示例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();
}
示例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();
}
示例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);
}
示例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();
}
示例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);
}