本文整理了Java中com.facebook.presto.spi.block.Block.getPositionCount()
方法的一些代码示例,展示了Block.getPositionCount()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Block.getPositionCount()
方法的具体详情如下:
包路径:com.facebook.presto.spi.block.Block
类名称:Block
方法名:getPositionCount
[英]Returns the number of positions in this block.
[中]返回此块中的位置数。
代码示例来源:origin: prestodb/presto
private static boolean hasNull(Block keys)
{
for (int position = 0; position < keys.getPositionCount(); position++) {
if (keys.isNull(position)) {
return true;
}
}
return false;
}
代码示例来源:origin: prestodb/presto
@TypeParameter("E")
@SqlType(StandardTypes.BIGINT)
public static long arrayCardinality(@SqlType("array(E)") Block block)
{
return block.getPositionCount();
}
}
代码示例来源:origin: prestodb/presto
@TypeParameter("K")
@TypeParameter("V")
@SqlType("array(K)")
public static Block getKeys(
@TypeParameter("K") Type keyType,
@SqlType("map(K,V)") Block block)
{
BlockBuilder blockBuilder = keyType.createBlockBuilder(null, block.getPositionCount() / 2);
for (int i = 0; i < block.getPositionCount(); i += 2) {
keyType.appendTo(block, i, blockBuilder);
}
return blockBuilder.build();
}
}
代码示例来源:origin: uk.co.nichesolutions.presto/presto-main
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();
}
}
代码示例来源:origin: prestodb/presto
@TypeParameter("T")
@SqlType(StandardTypes.BIGINT)
public static long hash(
@OperatorDependency(operator = HASH_CODE, returnType = StandardTypes.BIGINT, argumentTypes = {"T"}) MethodHandle hashFunction,
@TypeParameter("T") Type type,
@SqlType("array(T)") Block block)
{
try {
long hash = 0;
for (int i = 0; i < block.getPositionCount(); i++) {
hash = CombineHashFunction.getHash(hash, block.isNull(i) ? NULL_HASH_CODE : (long) hashFunction.invoke(readNativeValue(type, block, i)));
}
return hash;
}
catch (Throwable t) {
throw internalError(t);
}
}
代码示例来源:origin: prestodb/presto
@UsedByGeneratedCode
public static Block appendElement(Type elementType, Block block, long value)
{
BlockBuilder blockBuilder = elementType.createBlockBuilder(null, block.getPositionCount() + 1);
for (int i = 0; i < block.getPositionCount(); i++) {
elementType.appendTo(block, i, blockBuilder);
}
elementType.writeLong(blockBuilder, value);
return blockBuilder.build();
}
代码示例来源:origin: prestodb/presto
@Override
public Block apply(Block block)
{
BlockBuilder blockBuilder = toType.createBlockBuilder(null, block.getPositionCount());
for (int i = 0; i < block.getPositionCount(); i++) {
if (block.isNull(i)) {
blockBuilder.appendNull();
continue;
}
toType.writeLong(blockBuilder, fromType.getLong(block, i));
}
return blockBuilder.build();
}
}
代码示例来源:origin: prestodb/presto
@Override
public GroupByIdBlock getResult()
{
checkState(lastPosition == block.getPositionCount(), "process has not yet finished");
checkState(!finished, "result has produced");
finished = true;
return new GroupByIdBlock(nextGroupId, blockBuilder.build());
}
}
代码示例来源:origin: prestodb/presto
@SqlType("array(bigint)")
public static Block bigintUnion(@SqlType("array(bigint)") Block leftArray, @SqlType("array(bigint)") Block rightArray)
{
int leftArrayCount = leftArray.getPositionCount();
int rightArrayCount = rightArray.getPositionCount();
LongSet set = new LongOpenHashSet(leftArrayCount + rightArrayCount);
BlockBuilder distinctElementBlockBuilder = BIGINT.createBlockBuilder(null, leftArrayCount + rightArrayCount);
AtomicBoolean containsNull = new AtomicBoolean(false);
appendBigintArray(leftArray, containsNull, set, distinctElementBlockBuilder);
appendBigintArray(rightArray, containsNull, set, distinctElementBlockBuilder);
return distinctElementBlockBuilder.build();
}
代码示例来源:origin: uk.co.nichesolutions.presto/presto-main
public Block serialize()
{
Block keys = keyBlockBuilder.build();
Block values = valueBlockBuilder.build();
BlockBuilder blockBuilder = new InterleavedBlockBuilder(ImmutableList.of(keyType, valueType), new BlockBuilderStatus(), keys.getPositionCount() * 2);
for (int i = 0; i < keys.getPositionCount(); i++) {
keyType.appendTo(keys, i, blockBuilder);
valueType.appendTo(values, i, blockBuilder);
}
return blockBuilder.build();
}
代码示例来源:origin: uk.co.nichesolutions.presto/presto-main
public static Block createMap(MapType mapType, Block keyBlock, Block valueBlock)
{
BlockBuilder blockBuilder = new InterleavedBlockBuilder(mapType.getTypeParameters(), new BlockBuilderStatus(), keyBlock.getPositionCount() * 2);
checkCondition(keyBlock.getPositionCount() == valueBlock.getPositionCount(), INVALID_FUNCTION_ARGUMENT, "Key and value arrays must be the same length");
for (int i = 0; i < keyBlock.getPositionCount(); i++) {
if (keyBlock.isNull(i)) {
throw new PrestoException(INVALID_FUNCTION_ARGUMENT, "map key cannot be null");
}
mapType.getKeyType().appendTo(keyBlock, i, blockBuilder);
mapType.getValueType().appendTo(valueBlock, i, blockBuilder);
}
return blockBuilder.build();
}
}
代码示例来源:origin: uk.co.nichesolutions.presto/presto-main
@Override
public void deserialize(Block block, int index, ArrayAggregationState state)
{
Block stateBlock = (Block) arrayType.getObject(block, index);
int positionCount = stateBlock.getPositionCount();
BlockBuilder blockBuilder = elementType.createBlockBuilder(new BlockBuilderStatus(), positionCount);
for (int i = 0; i < positionCount; i++) {
stateBlock.writePositionTo(i, blockBuilder);
blockBuilder.closeEntry();
}
state.setBlockBuilder(blockBuilder);
}
}
代码示例来源:origin: uk.co.nichesolutions.presto/presto-main
public static Block getValues(Type valueType, Block block)
{
BlockBuilder blockBuilder = valueType.createBlockBuilder(new BlockBuilderStatus(), block.getPositionCount() / 2);
for (int i = 0; i < block.getPositionCount(); i += 2) {
valueType.appendTo(block, i + 1, blockBuilder);
}
return blockBuilder.build();
}
}
代码示例来源:origin: prestodb/presto
@TypeParameter("T")
@SqlType(StandardTypes.BOOLEAN)
public static boolean greaterThan(
@OperatorDependency(operator = GREATER_THAN, returnType = StandardTypes.BOOLEAN, argumentTypes = {"T", "T"}) MethodHandle greaterThanFunction,
@TypeParameter("T") Type type,
@SqlType("array(T)") Block leftArray,
@SqlType("array(T)") Block rightArray)
{
int len = Math.min(leftArray.getPositionCount(), rightArray.getPositionCount());
int index = 0;
while (index < len) {
checkElementNotNull(leftArray.isNull(index), ARRAY_NULL_ELEMENT_MSG);
checkElementNotNull(rightArray.isNull(index), ARRAY_NULL_ELEMENT_MSG);
Object leftElement = readNativeValue(type, leftArray, index);
Object rightElement = readNativeValue(type, rightArray, index);
try {
if ((boolean) greaterThanFunction.invoke(leftElement, rightElement)) {
return true;
}
if ((boolean) greaterThanFunction.invoke(rightElement, leftElement)) {
return false;
}
}
catch (Throwable t) {
throw internalError(t);
}
index++;
}
return leftArray.getPositionCount() > rightArray.getPositionCount();
}
代码示例来源:origin: prestodb/presto
@TypeParameter("K")
@TypeParameter("V")
@SqlType("array(V)")
public static Block getValues(
@TypeParameter("V") Type valueType,
@SqlType("map(K,V)") Block block)
{
BlockBuilder blockBuilder = valueType.createBlockBuilder(null, block.getPositionCount() / 2);
for (int i = 0; i < block.getPositionCount(); i += 2) {
valueType.appendTo(block, i + 1, blockBuilder);
}
return blockBuilder.build();
}
}
代码示例来源:origin: prestodb/presto
@UsedByGeneratedCode
public static Block appendElement(Type elementType, Block block, Slice value)
{
BlockBuilder blockBuilder = elementType.createBlockBuilder(null, block.getPositionCount() + 1);
for (int i = 0; i < block.getPositionCount(); i++) {
elementType.appendTo(block, i, blockBuilder);
}
elementType.writeSlice(blockBuilder, value);
return blockBuilder.build();
}
代码示例来源:origin: prestodb/presto
@Override
public void addBlock(Type type, Block block)
{
for (int position = 0; position < block.getPositionCount(); position++) {
if (!block.isNull(position)) {
rowCount++;
}
}
}
代码示例来源:origin: prestodb/presto
@Override
public Block apply(Block block)
{
BlockBuilder blockBuilder = toType.createBlockBuilder(null, block.getPositionCount());
for (int i = 0; i < block.getPositionCount(); i++) {
if (block.isNull(i)) {
blockBuilder.appendNull();
continue;
}
toType.writeSlice(blockBuilder, utf8Slice(String.valueOf(fromType.getLong(block, i))));
}
return blockBuilder.build();
}
}
代码示例来源:origin: prestodb/presto
@Override
protected Object getGreaterValue(Object value)
{
Block block = (Block) value;
BlockBuilder blockBuilder = SMALLINT.createBlockBuilder(null, block.getPositionCount() + 1);
for (int i = 0; i < block.getPositionCount(); i++) {
SMALLINT.appendTo(block, i, blockBuilder);
}
SMALLINT.writeLong(blockBuilder, 1L);
return blockBuilder.build();
}
}
代码示例来源:origin: prestodb/presto
@ScalarFunction("values_at_quantiles")
@Description("For each input q between [0, 1], find the value whose rank in the sorted sequence of the n values represented by the qdigest is qn.")
@SqlType("array(real)")
public static Block valuesAtQuantilesReal(@SqlType("qdigest(real)") Slice input, @SqlType("array(double)") Block percentilesArrayBlock)
{
QuantileDigest digest = new QuantileDigest(input);
BlockBuilder output = REAL.createBlockBuilder(null, percentilesArrayBlock.getPositionCount());
for (int i = 0; i < percentilesArrayBlock.getPositionCount(); i++) {
REAL.writeLong(output, floatToRawIntBits(sortableIntToFloat((int) digest.getQuantile(DOUBLE.getDouble(percentilesArrayBlock, i)))));
}
return output.build();
}
内容来源于网络,如有侵权,请联系作者删除!