@Override public void writePositionTo(int position, BlockBuilder blockBuilder) { block.writePositionTo(position, blockBuilder); }
@Override public void writePositionTo(int position, BlockBuilder blockBuilder) { checkReadablePosition(position); value.writePositionTo(0, blockBuilder); }
@Override public void writePositionTo(int position, BlockBuilder blockBuilder) { assureLoaded(); block.writePositionTo(position, blockBuilder); }
@Override public void writePositionTo(int position, BlockBuilder blockBuilder) { dictionary.writePositionTo(getId(position), blockBuilder); }
@Override public void writePositionTo(int position, BlockBuilder blockBuilder) { position = getAbsolutePosition(position); if (position % 2 == 0) { getRawKeyBlock().writePositionTo(position / 2, blockBuilder); } else { getRawValueBlock().writePositionTo(position / 2, blockBuilder); } }
@Override public void writePositionTo(int position, BlockBuilder blockBuilder) { checkFieldIndex(position); getRawFieldBlock(position).writePositionTo(rowIndex, blockBuilder); }
@Override public void appendTo(Block block, int position, BlockBuilder blockBuilder) { if (block.isNull(position)) { blockBuilder.appendNull(); } else { block.writePositionTo(position, blockBuilder); } }
@Override public void writePositionTo(int position, BlockBuilder blockBuilder) { checkReadablePosition(position); getBlock().writePositionTo(position + start, blockBuilder); }
@Override public void appendTo(Block block, int position, BlockBuilder blockBuilder) { if (block.isNull(position)) { blockBuilder.appendNull(); } else { block.writePositionTo(position, blockBuilder); } }
@Override public void appendTo(Block block, int position, BlockBuilder blockBuilder) { if (block.isNull(position)) { blockBuilder.appendNull(); } else { block.writePositionTo(position, blockBuilder); } }
@Override public BlockBuilder appendStructure(Block block) { if (!(block instanceof AbstractSingleRowBlock)) { throw new IllegalStateException("Expected AbstractSingleRowBlock"); } if (currentEntryOpened) { throw new IllegalStateException("Expected current entry to be closed but was opened"); } currentEntryOpened = true; int blockPositionCount = block.getPositionCount(); if (blockPositionCount != numFields) { throw new IllegalArgumentException(format("block position count (%s) is not equal to number of fields (%s)", blockPositionCount, numFields)); } for (int i = 0; i < blockPositionCount; i++) { if (block.isNull(i)) { fieldBlockBuilders[i].appendNull(); } else { block.writePositionTo(i, fieldBlockBuilders[i]); } } closeEntry(); return this; }
@Override public BlockBuilder appendStructure(Block block) { if (currentEntryOpened) { throw new IllegalStateException("Expected current entry to be closed but was opened"); } currentEntryOpened = true; for (int i = 0; i < block.getPositionCount(); i++) { if (block.isNull(i)) { values.appendNull(); } else { block.writePositionTo(i, values); } } closeEntry(); return this; }
@Override public BlockBuilder appendStructureInternal(Block block, int position) { if (!(block instanceof AbstractMapBlock)) { throw new IllegalArgumentException("Expected AbstractMapBlock"); } if (currentEntryOpened) { throw new IllegalStateException("Expected current entry to be closed but was opened"); } currentEntryOpened = true; AbstractMapBlock mapBlock = (AbstractMapBlock) block; int startValueOffset = mapBlock.getOffset(position); int endValueOffset = mapBlock.getOffset(position + 1); for (int i = startValueOffset; i < endValueOffset; i++) { if (mapBlock.getRawKeyBlock().isNull(i)) { throw new IllegalArgumentException("Map keys must not be null"); } else { mapBlock.getRawKeyBlock().writePositionTo(i, keyBlockBuilder); } if (mapBlock.getRawValueBlock().isNull(i)) { valueBlockBuilder.appendNull(); } else { mapBlock.getRawValueBlock().writePositionTo(i, valueBlockBuilder); } } closeEntry(mapBlock.getHashTables(), startValueOffset * HASH_MULTIPLIER); return this; }
@Override public BlockBuilder appendStructureInternal(Block block, int position) { if (!(block instanceof AbstractRowBlock)) { throw new IllegalArgumentException(); } AbstractRowBlock rowBlock = (AbstractRowBlock) block; BlockBuilder entryBuilder = this.beginBlockEntry(); int fieldBlockOffset = rowBlock.getFieldBlockOffset(position); for (int i = 0; i < rowBlock.numFields; i++) { if (rowBlock.getRawFieldBlocks()[i].isNull(fieldBlockOffset)) { entryBuilder.appendNull(); } else { rowBlock.getRawFieldBlocks()[i].writePositionTo(fieldBlockOffset, entryBuilder); } } closeEntry(); return this; }
private static Block copyBlockViaWritePositionTo(Block block, Supplier<BlockBuilder> newBlockBuilder) { BlockBuilder blockBuilder = newBlockBuilder.get(); for (int i = 0; i < block.getPositionCount(); i++) { if (block.isNull(i)) { blockBuilder.appendNull(); } else { block.writePositionTo(i, blockBuilder); } } return blockBuilder.build(); }
@Override public BlockBuilder appendStructureInternal(Block block, int position) { if (!(block instanceof AbstractArrayBlock)) { throw new IllegalArgumentException(); } AbstractArrayBlock arrayBlock = (AbstractArrayBlock) block; BlockBuilder entryBuilder = beginBlockEntry(); int startValueOffset = arrayBlock.getOffset(position); int endValueOffset = arrayBlock.getOffset(position + 1); for (int i = startValueOffset; i < endValueOffset; i++) { if (arrayBlock.getRawElementBlock().isNull(i)) { entryBuilder.appendNull(); } else { arrayBlock.getRawElementBlock().writePositionTo(i, entryBuilder); } } closeEntry(); return this; }
public static Block filter(Type type, Block block, MethodHandle function) { int positionCount = block.getPositionCount(); BlockBuilder resultBuilder = type.createBlockBuilder(null, positionCount); for (int position = 0; position < positionCount; position++) { Long input = (Long) readNativeValue(type, block, position); Boolean keep; try { keep = (Boolean) function.invokeExact(input); } catch (Throwable t) { throwIfUnchecked(t); throw new RuntimeException(t); } if (TRUE.equals(keep)) { block.writePositionTo(position, resultBuilder); } } return resultBuilder.build(); } }
@Override public void writePositionTo(int position, BlockBuilder blockBuilder) { position = getAbsolutePosition(position); if (position % 2 == 0) { getRawKeyBlock().writePositionTo(position / 2, blockBuilder); } else { getRawValueBlock().writePositionTo(position / 2, blockBuilder); } }
@Override public void appendTo(Block block, int position, BlockBuilder blockBuilder) { if (block.isNull(position)) { blockBuilder.appendNull(); } else { block.writePositionTo(position, blockBuilder); } }
@Override public void appendTo(Block block, int position, BlockBuilder blockBuilder) { if (block.isNull(position)) { blockBuilder.appendNull(); } else { block.writePositionTo(position, blockBuilder); } }