ArrayAccessor(ListVector vector) { super(vector); this.accessor = vector; this.arrayData = new ArrowColumnVector(vector.getDataVector()); }
ArrayAccessor(ListVector vector) { super(vector); this.accessor = vector; this.arrayData = new ArrowColumnVector(vector.getDataVector()); }
public UnionListReader(ListVector vector) { this.vector = vector; this.data = vector.getDataVector(); }
@Override public List<FieldVector> getChildrenFromFields() { return singletonList(getDataVector()); }
public UnionListWriter(ListVector vector, NullableStructWriterFactory nullableStructWriterFactory) { this.vector = vector; this.writer = new PromotableWriter(vector.getDataVector(), vector, nullableStructWriterFactory); }
@Override public Field getField() { return new Field(name, fieldType, Collections.singletonList(getDataVector().getField())); }
public TransferImpl(ListVector to) { this.to = to; to.addOrGetVector(vector.getField().getFieldType()); if (to.getDataVector() instanceof ZeroVector) { to.addOrGetVector(vector.getField().getFieldType()); } dataTransferPair = getDataVector().makeTransferPair(to.getDataVector()); }
/** * Get the element in the list vector at a particular index. * @param index position of the element * @return Object at given position */ @Override public Object getObject(int index) { if (isSet(index) == 0) { return null; } final List<Object> vals = new JsonStringArrayList<>(); final int start = offsetBuffer.getInt(index * OFFSET_WIDTH); final int end = offsetBuffer.getInt((index + 1) * OFFSET_WIDTH); final ValueVector vv = getDataVector(); for (int i = start; i < end; i++) { vals.add(vv.getObject(i)); } return vals; }
@Override public void set(ValueVector v, int index) { this.dataVector = ((ListVector)v).getDataVector(); if(obj != null){ UnionListWriter listWriter = ((ListVector)v).getWriter(); listWriter.setPosition(index); List<Integer> list = obj; listWriter.startList(); for (int i = 0; i < list.size(); i++) { listWriter.bigInt().writeBigInt(list.get(i)); } listWriter.endList(); } }
@Test public void writeAndReadEmptyListVectors() throws Exception { try (final VectorContainer batchData = createBatch(1, testEmptyListVector())) { final Path basePath = new Path(dateGenFolder.getRoot().getPath()); final ArrowFileMetadata metadata = writeArrowFile(batchData); try (final ArrowFileReader reader = new ArrowFileReader(FileSystem.get(FS_CONF), basePath, metadata, ALLOCATOR)) { final List<RecordBatchHolder> batchHolders = reader.read(0, 1); assertEquals(1, batchHolders.size()); assertNotNull(batchHolders.get(0).getData()); assertEquals(0, batchHolders.get(0).getStart()); assertEquals(1, batchHolders.get(0).getEnd()); final BatchSchema schema = batchHolders.get(0).getData().getContainer().getSchema(); assertEquals(1, schema.getFieldCount()); assertEquals("emptyListVector", schema.getColumn(0).getName()); assertEquals(MinorType.LIST, Types.getMinorTypeForArrowType(schema.getColumn(0).getType())); final VectorContainer batchContainer = batchHolders.get(0).getData().getContainer(); assertTrue(Iterators.size(batchContainer.iterator()) == 1); for (final VectorWrapper<?> wrapper : batchContainer) { assertTrue(wrapper.getValueVector() instanceof ListVector); assertTrue(((ListVector) (wrapper.getValueVector())).getDataVector() instanceof ZeroVector); } releaseBatches(batchHolders); } } }
public void load(SerializedField metadata, ArrowBuf buffer) { /* release the current buffers (if any) */ listVector.clear(); /* load inner offset buffer */ final SerializedField offsetMetadata = metadata.getChild(0); final int offsetLength = offsetMetadata.getBufferLength(); loadOffsetBuffer(offsetMetadata, buffer); /* load inner validity buffer */ final SerializedField bitMetadata = metadata.getChild(1); final int bitLength = bitMetadata.getBufferLength(); loadValidityBuffer(bitMetadata, buffer.slice(offsetLength, bitLength)); /* load inner data vector */ final SerializedField vectorMetadata = metadata.getChild(2); if (listVector.getDataVector() == BaseRepeatedValueVector.DEFAULT_DATA_VECTOR) { listVector.addOrGetVector(FieldType.nullable(getArrowMinorType(vectorMetadata.getMajorType().getMinorType()).getType())); } final int vectorLength = vectorMetadata.getBufferLength(); TypeHelper.load(listVector.vector, vectorMetadata, buffer.slice(offsetLength + bitLength, vectorLength)); listVector.setLastSet(metadata.getValueCount()); listVector.valueCount = metadata.getValueCount(); }