private Block computeResultBlock(Type type, Block block, int arrayLength) { if (pageBuilder.isFull()) { pageBuilder.reset(); } BlockBuilder blockBuilder = pageBuilder.getBlockBuilder(0); for (int i = 0; i < arrayLength; ++i) { type.appendTo(block, positions.get(i), blockBuilder); } pageBuilder.declarePositions(arrayLength); return blockBuilder.getRegion(blockBuilder.getPositionCount() - arrayLength, arrayLength); }
return blockBuilder.getRegion(blockBuilder.getPositionCount() - positions.size(), positions.size());
return blockBuilder.getRegion(blockBuilder.getPositionCount() - arrayLength, arrayLength);
return blockBuilder.getRegion(blockBuilder.getPositionCount() - length, length);
@TypeParameter("E") @SqlType("array(E)") public Block reverse( @TypeParameter("E") Type type, @SqlType("array(E)") Block block) { int arrayLength = block.getPositionCount(); if (arrayLength < 2) { return block; } if (pageBuilder.isFull()) { pageBuilder.reset(); } BlockBuilder blockBuilder = pageBuilder.getBlockBuilder(0); for (int i = arrayLength - 1; i >= 0; i--) { type.appendTo(block, i, blockBuilder); } pageBuilder.declarePositions(arrayLength); return blockBuilder.getRegion(blockBuilder.getPositionCount() - arrayLength, arrayLength); } }
return blockBuilder.getRegion(blockBuilder.getPositionCount() - resultPositionCount, resultPositionCount);
return distinctElementBlockBuilder.getRegion(distinctElementBlockBuilder.getPositionCount() - distinctCount, distinctCount);
return distinctElementBlockBuilder.getRegion(distinctElementBlockBuilder.getPositionCount() - distinctCount, distinctCount);
return blockBuilder.getRegion(blockBuilder.getPositionCount() - intersectTypedSet.size(), intersectTypedSet.size());
Block target = blockBuilder.getRegion(blockBuilder.getPositionCount() - groupCount, groupCount);
Block target = blockBuilder.getRegion(blockBuilder.getPositionCount() - groupCount, groupCount);
@TypeParameter("E") @SqlType("array(E)") public Block concat(@TypeParameter("E") Type elementType, @SqlType("array(E)") Block leftBlock, @SqlType("array(E)") Block rightBlock) { if (leftBlock.getPositionCount() == 0) { return rightBlock; } if (rightBlock.getPositionCount() == 0) { return leftBlock; } if (pageBuilder.isFull()) { pageBuilder.reset(); } BlockBuilder blockBuilder = pageBuilder.getBlockBuilder(0); for (int i = 0; i < leftBlock.getPositionCount(); i++) { elementType.appendTo(leftBlock, i, blockBuilder); } for (int i = 0; i < rightBlock.getPositionCount(); i++) { elementType.appendTo(rightBlock, i, blockBuilder); } int total = leftBlock.getPositionCount() + rightBlock.getPositionCount(); pageBuilder.declarePositions(total); return blockBuilder.getRegion(blockBuilder.getPositionCount() - total, total); } }