Skip to content

Commit 7fe36d7

Browse files
committed
Add makeTransferPair w/ extended factory
1 parent 7a7e4ed commit 7fe36d7

File tree

12 files changed

+78
-52
lines changed

12 files changed

+78
-52
lines changed

vector/src/main/java/org/apache/arrow/vector/BaseFixedWidthVector.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.apache.arrow.memory.util.hash.ArrowBufHasher;
3131
import org.apache.arrow.util.Preconditions;
3232
import org.apache.arrow.vector.compare.VectorVisitor;
33+
import org.apache.arrow.vector.complex.impl.ExtensionTypeWriterFactory;
3334
import org.apache.arrow.vector.ipc.message.ArrowFieldNode;
3435
import org.apache.arrow.vector.types.pojo.Field;
3536
import org.apache.arrow.vector.util.CallBack;
@@ -901,4 +902,10 @@ public int hashCode(int index, ArrowBufHasher hasher) {
901902
public <OUT, IN> OUT accept(VectorVisitor<OUT, IN> visitor, IN value) {
902903
return visitor.visit(this, value);
903904
}
905+
906+
@Override
907+
public TransferPair makeTransferPair(
908+
ValueVector target, ExtensionTypeWriterFactory writerFactory) {
909+
throw new UnsupportedOperationException();
910+
}
904911
}

vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,4 +384,10 @@ protected void allocateValidityBuffer(long byteSizeTarget) {
384384
validityBuffer.readerIndex(0);
385385
validityBuffer.setZero(0, validityBuffer.capacity());
386386
}
387+
388+
@Override
389+
public TransferPair makeTransferPair(
390+
ValueVector target, ExtensionTypeWriterFactory writerFactory) {
391+
throw new UnsupportedOperationException();
392+
}
387393
}

vector/src/main/java/org/apache/arrow/vector/BaseVariableWidthVector.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.apache.arrow.memory.util.hash.ArrowBufHasher;
3232
import org.apache.arrow.util.Preconditions;
3333
import org.apache.arrow.vector.compare.VectorVisitor;
34+
import org.apache.arrow.vector.complex.impl.ExtensionTypeWriterFactory;
3435
import org.apache.arrow.vector.ipc.message.ArrowFieldNode;
3536
import org.apache.arrow.vector.types.pojo.Field;
3637
import org.apache.arrow.vector.util.CallBack;
@@ -1443,4 +1444,10 @@ public <OUT, IN> OUT accept(VectorVisitor<OUT, IN> visitor, IN value) {
14431444
public final int getEndOffset(int index) {
14441445
return offsetBuffer.getInt((long) (index + 1) * OFFSET_WIDTH);
14451446
}
1447+
1448+
@Override
1449+
public TransferPair makeTransferPair(
1450+
ValueVector target, ExtensionTypeWriterFactory writerFactory) {
1451+
throw new UnsupportedOperationException();
1452+
}
14461453
}

vector/src/main/java/org/apache/arrow/vector/NullVector.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,12 @@ public TransferPair makeTransferPair(ValueVector target) {
201201
return new TransferImpl((NullVector) target);
202202
}
203203

204+
@Override
205+
public TransferPair makeTransferPair(
206+
ValueVector target, ExtensionTypeWriterFactory writerFactory) {
207+
return makeTransferPair(target);
208+
}
209+
204210
@Override
205211
public FieldReader getReader() {
206212
return NullReader.INSTANCE;

vector/src/main/java/org/apache/arrow/vector/ValueVector.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,8 @@ public interface ValueVector extends Closeable, Iterable<ValueVector> {
190190
*/
191191
TransferPair makeTransferPair(ValueVector target);
192192

193+
TransferPair makeTransferPair(ValueVector target, ExtensionTypeWriterFactory writerFactory);
194+
193195
/**
194196
* Get a reader for this vector.
195197
*

vector/src/main/java/org/apache/arrow/vector/complex/AbstractContainerVector.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.apache.arrow.vector.types.pojo.ArrowType.Struct;
3131
import org.apache.arrow.vector.types.pojo.FieldType;
3232
import org.apache.arrow.vector.util.CallBack;
33+
import org.apache.arrow.vector.util.TransferPair;
3334
import org.apache.arrow.vector.util.ValueVectorUtility;
3435

3536
/**
@@ -168,4 +169,10 @@ public void copyFromSafe(
168169
public String getName() {
169170
return name;
170171
}
172+
173+
@Override
174+
public TransferPair makeTransferPair(
175+
ValueVector target, ExtensionTypeWriterFactory writerFactory) {
176+
throw new UnsupportedOperationException();
177+
}
171178
}

vector/src/main/java/org/apache/arrow/vector/complex/LargeListVector.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@
6363
import org.apache.arrow.vector.util.OversizedAllocationException;
6464
import org.apache.arrow.vector.util.SchemaChangeRuntimeException;
6565
import org.apache.arrow.vector.util.TransferPair;
66-
import org.apache.arrow.vector.util.TransferPairWithExtendedType;
6766

6867
/**
6968
* A list vector contains lists of a specific type of elements. Its structure contains 3 elements.
@@ -442,8 +441,7 @@ private void reallocValidityBuffer() {
442441
if (validityAllocationSizeInBytes > 0) {
443442
newAllocationSize = validityAllocationSizeInBytes;
444443
} else {
445-
newAllocationSize =
446-
BitVectorHelper.getValidityBufferSizeFromCount(INITIAL_VALUE_ALLOCATION) * 2L;
444+
newAllocationSize = getValidityBufferSizeFromCount(INITIAL_VALUE_ALLOCATION) * 2L;
447445
}
448446
}
449447
newAllocationSize = CommonUtil.nextPowerOfTwo(newAllocationSize);
@@ -570,6 +568,12 @@ public TransferPair makeTransferPair(ValueVector target) {
570568
return new TransferImpl((LargeListVector) target);
571569
}
572570

571+
@Override
572+
public TransferPair makeTransferPair(
573+
ValueVector target, ExtensionTypeWriterFactory writerFactory) {
574+
return new TransferImpl((LargeListVector) target, writerFactory);
575+
}
576+
573577
@Override
574578
public long getValidityBufferAddress() {
575579
return validityBuffer.memoryAddress();
@@ -649,10 +653,11 @@ public UnionVector promoteToUnion() {
649653
return vector;
650654
}
651655

652-
private class TransferImpl implements TransferPairWithExtendedType {
656+
private class TransferImpl implements TransferPair {
653657

654658
LargeListVector to;
655659
TransferPair dataTransferPair;
660+
ExtensionTypeWriterFactory writerFactory;
656661

657662
public TransferImpl(String name, BufferAllocator allocator, CallBack callBack) {
658663
this(new LargeListVector(name, allocator, field.getFieldType(), callBack));
@@ -662,6 +667,11 @@ public TransferImpl(Field field, BufferAllocator allocator, CallBack callBack) {
662667
this(new LargeListVector(field, allocator, callBack));
663668
}
664669

670+
public TransferImpl(LargeListVector to, ExtensionTypeWriterFactory writerFactory) {
671+
this(to);
672+
this.writerFactory = writerFactory;
673+
}
674+
665675
public TransferImpl(LargeListVector to) {
666676
this.to = to;
667677
to.addOrGetVector(vector.getField().getFieldType());
@@ -730,13 +740,7 @@ public ValueVector getTo() {
730740

731741
@Override
732742
public void copyValueSafe(int from, int to) {
733-
this.to.copyFrom(from, to, LargeListVector.this);
734-
}
735-
736-
@Override
737-
public void copyValueSafe(
738-
int from, int to, ExtensionTypeWriterFactory extensionTypeWriterFactory) {
739-
this.to.copyFrom(from, to, LargeListVector.this, extensionTypeWriterFactory);
743+
this.to.copyFrom(from, to, LargeListVector.this, writerFactory);
740744
}
741745
}
742746

vector/src/main/java/org/apache/arrow/vector/complex/ListVector.java

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@
5656
import org.apache.arrow.vector.util.JsonStringArrayList;
5757
import org.apache.arrow.vector.util.OversizedAllocationException;
5858
import org.apache.arrow.vector.util.TransferPair;
59-
import org.apache.arrow.vector.util.TransferPairWithExtendedType;
6059

6160
/**
6261
* A list vector contains lists of a specific type of elements. Its structure contains 3 elements.
@@ -366,8 +365,7 @@ private long getNewAllocationSize(int currentBufferCapacity) {
366365
if (validityAllocationSizeInBytes > 0) {
367366
newAllocationSize = validityAllocationSizeInBytes;
368367
} else {
369-
newAllocationSize =
370-
BitVectorHelper.getValidityBufferSizeFromCount(INITIAL_VALUE_ALLOCATION) * 2L;
368+
newAllocationSize = getValidityBufferSizeFromCount(INITIAL_VALUE_ALLOCATION) * 2L;
371369
}
372370
}
373371
newAllocationSize = CommonUtil.nextPowerOfTwo(newAllocationSize);
@@ -475,6 +473,11 @@ public TransferPair makeTransferPair(ValueVector target) {
475473
return new TransferImpl((ListVector) target);
476474
}
477475

476+
public TransferPair makeTransferPair(
477+
ValueVector target, ExtensionTypeWriterFactory writerFactory) {
478+
return new TransferImpl((ListVector) target, writerFactory);
479+
}
480+
478481
@Override
479482
public long getValidityBufferAddress() {
480483
return validityBuffer.memoryAddress();
@@ -529,10 +532,11 @@ public <OUT, IN> OUT accept(VectorVisitor<OUT, IN> visitor, IN value) {
529532
return visitor.visit(this, value);
530533
}
531534

532-
private class TransferImpl implements TransferPairWithExtendedType {
535+
private class TransferImpl implements TransferPair {
533536

534537
ListVector to;
535538
TransferPair dataTransferPair;
539+
ExtensionTypeWriterFactory writerFactory;
536540

537541
public TransferImpl(String name, BufferAllocator allocator, CallBack callBack) {
538542
this(new ListVector(name, allocator, field.getFieldType(), callBack));
@@ -542,6 +546,11 @@ public TransferImpl(Field field, BufferAllocator allocator, CallBack callBack) {
542546
this(new ListVector(field, allocator, callBack));
543547
}
544548

549+
public TransferImpl(ListVector to, ExtensionTypeWriterFactory writerFactory) {
550+
this(to);
551+
this.writerFactory = writerFactory;
552+
}
553+
545554
public TransferImpl(ListVector to) {
546555
this.to = to;
547556
to.addOrGetVector(vector.getField().getFieldType());
@@ -611,13 +620,7 @@ public ValueVector getTo() {
611620

612621
@Override
613622
public void copyValueSafe(int from, int to) {
614-
this.to.copyFrom(from, to, ListVector.this);
615-
}
616-
617-
@Override
618-
public void copyValueSafe(
619-
int from, int to, ExtensionTypeWriterFactory extensionTypeWriterFactory) {
620-
this.to.copyFrom(from, to, ListVector.this, extensionTypeWriterFactory);
623+
this.to.copyFrom(from, to, ListVector.this, writerFactory);
621624
}
622625
}
623626

vector/src/main/java/org/apache/arrow/vector/complex/impl/UnionExtensionWriter.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,11 @@ public void setPosition(int index) {
7979

8080
@Override
8181
public void writeNull() {
82-
this.writer.writeNull();
82+
if (this.writer != null) {
83+
this.writer.writeNull();
84+
} else {
85+
this.vector.setNull(getPosition());
86+
this.vector.setValueCount(getPosition() + 1);
87+
}
8388
}
8489
}

vector/src/main/java/org/apache/arrow/vector/util/TransferPairWithExtendedType.java

Lines changed: 0 additions & 23 deletions
This file was deleted.

0 commit comments

Comments
 (0)