public void serialize(BlockBuilder out) { BlockBuilder blockBuilder = out.beginBlockEntry(); BIGINT.writeLong(blockBuilder, getCapacity()); BlockBuilder keyElements = blockBuilder.beginBlockEntry(); for (int i = 0; i < positionCount; i++) { keyType.appendTo(keyBlockBuilder, heapIndex[i], keyElements); } blockBuilder.closeEntry(); BlockBuilder valueElements = blockBuilder.beginBlockEntry(); for (int i = 0; i < positionCount; i++) { valueType.appendTo(valueBlockBuilder, heapIndex[i], valueElements); } blockBuilder.closeEntry(); out.closeEntry(); }
public static void output(ArrayType outputType, MinMaxByNState state, BlockBuilder out) { TypedKeyValueHeap heap = state.getTypedKeyValueHeap(); if (heap == null || heap.isEmpty()) { out.appendNull(); return; } Type elementType = outputType.getElementType(); BlockBuilder arrayBlockBuilder = out.beginBlockEntry(); BlockBuilder reversedBlockBuilder = elementType.createBlockBuilder(null, heap.getCapacity()); long startSize = heap.getEstimatedSize(); heap.popAll(reversedBlockBuilder); state.addMemoryUsage(heap.getEstimatedSize() - startSize); for (int i = reversedBlockBuilder.getPositionCount() - 1; i >= 0; i--) { elementType.appendTo(reversedBlockBuilder, i, arrayBlockBuilder); } out.closeEntry(); }
public void serialize(BlockBuilder out) { BlockBuilder blockBuilder = out.beginBlockEntry(); BIGINT.writeLong(blockBuilder, getCapacity()); BlockBuilder keyElements = blockBuilder.beginBlockEntry(); for (int i = 0; i < positionCount; i++) { keyType.appendTo(keyBlockBuilder, heapIndex[i], keyElements); } blockBuilder.closeEntry(); BlockBuilder valueElements = blockBuilder.beginBlockEntry(); for (int i = 0; i < positionCount; i++) { valueType.appendTo(valueBlockBuilder, heapIndex[i], valueElements); } blockBuilder.closeEntry(); out.closeEntry(); }
public static void output(ArrayType outputType, MinMaxByNState state, BlockBuilder out) { TypedKeyValueHeap heap = state.getTypedKeyValueHeap(); if (heap == null || heap.isEmpty()) { out.appendNull(); return; } Type elementType = outputType.getElementType(); BlockBuilder arrayBlockBuilder = out.beginBlockEntry(); BlockBuilder reversedBlockBuilder = elementType.createBlockBuilder(new BlockBuilderStatus(), heap.getCapacity()); long startSize = heap.getEstimatedSize(); heap.popAll(reversedBlockBuilder); state.addMemoryUsage(heap.getEstimatedSize() - startSize); for (int i = reversedBlockBuilder.getPositionCount() - 1; i >= 0; i--) { elementType.appendTo(reversedBlockBuilder, i, arrayBlockBuilder); } out.closeEntry(); }