private void deserialize(Block block) { for (int i = 0; i < block.getPositionCount(); i += 2) { add(block, block, i, i + 1); } }
@Override public void writeBlock(Block block) { checkState(!closed); checkArgument(block.getPositionCount() > 0, "Block is empty"); ColumnarMap columnarMap = toColumnarMap(block); writeColumnarMap(columnarMap); }
private static <T> void assertBlockPositions(Block block, T[] expectedValues) { assertEquals(block.getPositionCount(), expectedValues.length); for (int position = 0; position < block.getPositionCount(); position++) { assertBlockPosition(block, position, expectedValues[position]); } }
@UsedByGeneratedCode public static Block prependElement(Type elementType, long value, Block block) { BlockBuilder blockBuilder = elementType.createBlockBuilder(null, block.getPositionCount() + 1); elementType.writeLong(blockBuilder, value); for (int i = 0; i < block.getPositionCount(); i++) { elementType.appendTo(block, i, blockBuilder); } return blockBuilder.build(); }
private static List toRowValue(Block rowBlock, List<Type> fieldTypes) { List<Object> values = new ArrayList<>(rowBlock.getPositionCount()); for (int i = 0; i < rowBlock.getPositionCount(); i++) { values.add(fieldTypes.get(i).getObjectValue(SESSION, rowBlock, i)); } return Collections.unmodifiableList(values); }
@UsedByGeneratedCode public static Block prependElement(Type elementType, Slice value, Block block) { BlockBuilder blockBuilder = elementType.createBlockBuilder(null, block.getPositionCount() + 1); elementType.writeSlice(blockBuilder, value); for (int i = 0; i < block.getPositionCount(); i++) { elementType.appendTo(block, i, blockBuilder); } return blockBuilder.build(); }
@UsedByGeneratedCode public static Block prependElement(Type elementType, double value, Block block) { BlockBuilder blockBuilder = elementType.createBlockBuilder(null, block.getPositionCount() + 1); elementType.writeDouble(blockBuilder, value); for (int i = 0; i < block.getPositionCount(); i++) { elementType.appendTo(block, i, blockBuilder); } return blockBuilder.build(); } }
public static Object getOnlyValue(Type type, Block block) { assertEquals(block.getPositionCount(), 1, "Block positions"); return type.getObjectValue(SESSION, block, 0); }
public static List<Object> toValues(Type type, Iterable<Block> blocks) { List<Object> values = new ArrayList<>(); for (Block block : blocks) { for (int position = 0; position < block.getPositionCount(); position++) { values.add(type.getObjectValue(SESSION, block, position)); } } return Collections.unmodifiableList(values); }
@UsedByGeneratedCode public static long hash(MethodHandle keyHashCodeFunction, MethodHandle valueHashCodeFunction, Type keyType, Type valueType, Block block) { long result = 0; for (int position = 0; position < block.getPositionCount(); position += 2) { result += hashPosition(keyHashCodeFunction, keyType, block, position) ^ hashPosition(valueHashCodeFunction, valueType, block, position + 1); } return result; } }
private static Block createMapBlock(MapType mapType, int positionCount, Block keyBlock, Block valueBlock) { int[] offsets = new int[positionCount + 1]; int mapSize = keyBlock.getPositionCount() / positionCount; for (int i = 0; i < offsets.length; i++) { offsets[i] = mapSize * i; } return mapType.createBlockFromKeyValue(Optional.empty(), offsets, keyBlock, valueBlock); }
private static Block createMapBlock(MapType mapType, int positionCount, Block keyBlock, Block valueBlock) { int[] offsets = new int[positionCount + 1]; int mapSize = keyBlock.getPositionCount() / positionCount; for (int i = 0; i < offsets.length; i++) { offsets[i] = mapSize * i; } return mapType.createBlockFromKeyValue(Optional.empty(), offsets, keyBlock, valueBlock); }
@Override default void addBlock(Type type, Block block) { for (int position = 0; position < block.getPositionCount(); position++) { if (!block.isNull(position)) { addValue(type.getSlice(block, position)); } } }
@TypeParameter("E") @SqlType(StandardTypes.BIGINT) public static long arrayCardinality(@SqlType("array(E)") Block block) { return block.getPositionCount(); } }
private void assertBlockEquals(Block block, List<Long> expected) { assertEquals(block.getPositionCount(), expected.size()); for (int i = 0; i < expected.size(); i++) { if (expected.get(i) == null) { assertTrue(block.isNull(i)); } else { assertEquals(block.getLong(i, 0), expected.get(i).longValue()); } } }
private static void checkArrayItemIsNull(Map<DecoderColumnHandle, FieldValueProvider> decodedRow, DecoderColumnHandle handle, long[] expected) { Block actualBlock = getBlock(decodedRow, handle); assertEquals(actualBlock.getPositionCount(), expected.length); for (int i = 0; i < actualBlock.getPositionCount(); i++) { assertTrue(actualBlock.isNull(i)); assertEquals(BIGINT.getLong(actualBlock, i), expected[i]); } }
private static void assertBlockEquals(Type type, Block actual, Block expected) { for (int position = 0; position < actual.getPositionCount(); position++) { assertEquals(type.getObjectValue(SESSION, actual, position), type.getObjectValue(SESSION, expected, position)); } } }
@Test public void testNull() { Accumulator accumulator = factory.createAccumulator(); Block result = getFinalBlock(accumulator); assertTrue(result.getPositionCount() == 1); assertTrue(result.isNull(0)); }
private static void testFilter(DictionaryAwarePageFilter filter, Block block, boolean filterRange) { IntSet actualSelectedPositions = toSet(filter.filter(null, new Page(block))); block = block.getLoadedBlock(); IntSet expectedSelectedPositions = new IntArraySet(block.getPositionCount()); for (int position = 0; position < block.getPositionCount(); position++) { if (isSelected(filterRange, block.getLong(position, 0))) { expectedSelectedPositions.add(position); } } assertEquals(actualSelectedPositions, expectedSelectedPositions); }
private static <T> void assertRunLengthEncodedBlock(Block block, T[] expectedValues) { for (int position = 0; position < block.getPositionCount(); position++) { RunLengthEncodedBlock runLengthEncodedBlock = createTestRleBlock(block, position); T[] expectedDictionaryValues = createTestRleExpectedValues(expectedValues, position); assertBlock(runLengthEncodedBlock, expectedDictionaryValues); assertColumnarArray(runLengthEncodedBlock, expectedDictionaryValues); } }