From bb538c6643f333cae6cc53886a6b4eadc1c5ae6d Mon Sep 17 00:00:00 2001
From: Ramasai
Date: Thu, 2 Mar 2023 22:46:18 -0500
Subject: [PATCH 1/9] Made reader initialization lazy and added new
getTransferPair() function that takes in a Field type
---
.../arrow/vector/BaseFixedWidthVector.java | 7 ++++
.../org/apache/arrow/vector/BigIntVector.java | 28 ++++++++++++++--
.../org/apache/arrow/vector/BitVector.java | 28 ++++++++++++++--
.../apache/arrow/vector/DateDayVector.java | 28 ++++++++++++++--
.../apache/arrow/vector/DateMilliVector.java | 27 +++++++++++++--
.../apache/arrow/vector/Decimal256Vector.java | 27 +++++++++++++--
.../apache/arrow/vector/DecimalVector.java | 27 +++++++++++++--
.../apache/arrow/vector/DurationVector.java | 27 +++++++++++++--
.../arrow/vector/FixedSizeBinaryVector.java | 28 ++++++++++++++--
.../org/apache/arrow/vector/Float4Vector.java | 28 ++++++++++++++--
.../org/apache/arrow/vector/Float8Vector.java | 28 ++++++++++++++--
.../org/apache/arrow/vector/IntVector.java | 28 ++++++++++++++--
.../arrow/vector/IntervalDayVector.java | 27 +++++++++++++--
.../vector/IntervalMonthDayNanoVector.java | 27 +++++++++++++--
.../arrow/vector/IntervalYearVector.java | 27 +++++++++++++--
.../apache/arrow/vector/SmallIntVector.java | 28 ++++++++++++++--
.../apache/arrow/vector/TimeMicroVector.java | 28 ++++++++++++++--
.../apache/arrow/vector/TimeMilliVector.java | 27 +++++++++++++--
.../apache/arrow/vector/TimeNanoVector.java | 28 ++++++++++++++--
.../apache/arrow/vector/TimeSecVector.java | 28 ++++++++++++++--
.../arrow/vector/TimeStampMicroTZVector.java | 31 ++++++++++++++---
.../arrow/vector/TimeStampMicroVector.java | 30 ++++++++++++++---
.../arrow/vector/TimeStampMilliTZVector.java | 31 ++++++++++++++---
.../arrow/vector/TimeStampMilliVector.java | 30 ++++++++++++++---
.../arrow/vector/TimeStampNanoTZVector.java | 31 ++++++++++++++---
.../arrow/vector/TimeStampNanoVector.java | 30 ++++++++++++++---
.../arrow/vector/TimeStampSecTZVector.java | 31 ++++++++++++++---
.../arrow/vector/TimeStampSecVector.java | 30 ++++++++++++++---
.../apache/arrow/vector/TinyIntVector.java | 28 ++++++++++++++--
.../org/apache/arrow/vector/UInt1Vector.java | 33 +++++++++++++++++--
.../org/apache/arrow/vector/UInt2Vector.java | 33 +++++++++++++++++--
.../org/apache/arrow/vector/UInt4Vector.java | 33 +++++++++++++++++--
.../org/apache/arrow/vector/UInt8Vector.java | 32 ++++++++++++++++--
.../apache/arrow/vector/TestBitVector.java | 10 ++++++
.../arrow/vector/TestDecimal256Vector.java | 11 +++++++
.../arrow/vector/TestDecimalVector.java | 11 +++++++
.../arrow/vector/TestDurationVector.java | 12 +++++++
.../vector/TestFixedSizeBinaryVector.java | 10 ++++++
.../arrow/vector/TestIntervalYearVector.java | 11 +++++++
39 files changed, 895 insertions(+), 104 deletions(-)
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BaseFixedWidthVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BaseFixedWidthVector.java
index 0c61ad70721..bb697db096e 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BaseFixedWidthVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BaseFixedWidthVector.java
@@ -580,6 +580,13 @@ public TransferPair getTransferPair(BufferAllocator allocator) {
*/
public abstract TransferPair getTransferPair(String ref, BufferAllocator allocator);
+ /**
+ * Construct a transfer pair of this vector and another vector of same type.
+ * @param field Field object used by the vector
+ * @return TransferPair
+ */
+ public abstract TransferPair getTransferPair(Field field, BufferAllocator allocator);
+
/**
* Transfer this vector'data to another vector. The memory associated
* with this vector is transferred to the allocator of target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
index c19955b54e5..22140686d6b 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.BigIntReaderImpl;
@@ -37,7 +39,7 @@
*/
public final class BigIntVector extends BaseFixedWidthVector implements BaseIntVector {
public static final byte TYPE_WIDTH = 8;
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a BigIntVector. This doesn't allocate any memory for
@@ -71,7 +73,11 @@ public BigIntVector(String name, FieldType fieldType, BufferAllocator allocator)
*/
public BigIntVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new BigIntReaderImpl(BigIntVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new BigIntReaderImpl(BigIntVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -81,7 +87,7 @@ public BigIntVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -298,6 +304,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -331,6 +349,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new BigIntVector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new BigIntVector(field, allocator);
+ }
+
public TransferImpl(BigIntVector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
index 3bcfd983e64..3bfae8f7bd2 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
@@ -20,6 +20,8 @@
import static org.apache.arrow.memory.util.LargeMemoryUtil.capAtMaxInt;
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.memory.util.ArrowBufPointer;
@@ -46,7 +48,7 @@ public final class BitVector extends BaseFixedWidthVector {
private static final int HASH_CODE_FOR_ONE = 19;
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a BitVector. This doesn't allocate any memory for
@@ -80,7 +82,11 @@ public BitVector(String name, FieldType fieldType, BufferAllocator allocator) {
*/
public BitVector(Field field, BufferAllocator allocator) {
super(field, allocator, 0);
- reader = new BitReaderImpl(BitVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new BitReaderImpl(BitVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -90,7 +96,7 @@ public BitVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -554,6 +560,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -572,6 +590,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new BitVector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new BitVector(field, allocator);
+ }
+
public TransferImpl(BitVector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
index 3e88268450a..6d5ec475437 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.DateDayReaderImpl;
@@ -38,7 +40,7 @@
public final class DateDayVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 4;
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a DateDayVector. This doesn't allocate any memory for
@@ -72,7 +74,11 @@ public DateDayVector(String name, FieldType fieldType, BufferAllocator allocator
*/
public DateDayVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new DateDayReaderImpl(DateDayVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new DateDayReaderImpl(DateDayVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -82,7 +88,7 @@ public DateDayVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -302,6 +308,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -320,6 +338,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new DateDayVector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new DateDayVector(field, allocator);
+ }
+
public TransferImpl(DateDayVector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
index 73738d77176..8e76a5e2266 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
@@ -20,6 +20,7 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -40,7 +41,7 @@
*/
public final class DateMilliVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 8;
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a DateMilliVector. This doesn't allocate any memory for
@@ -74,7 +75,11 @@ public DateMilliVector(String name, FieldType fieldType, BufferAllocator allocat
*/
public DateMilliVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new DateMilliReaderImpl(DateMilliVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new DateMilliReaderImpl(DateMilliVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -84,7 +89,7 @@ public DateMilliVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -305,6 +310,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -323,6 +340,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new DateMilliVector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new DateMilliVector(field, allocator);
+ }
+
public TransferImpl(DateMilliVector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java
index 5a1526b0c49..6640aae6847 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java
@@ -21,6 +21,7 @@
import java.math.BigDecimal;
import java.nio.ByteOrder;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -46,7 +47,7 @@ public final class Decimal256Vector extends BaseFixedWidthVector {
public static final int MAX_PRECISION = 76;
public static final byte TYPE_WIDTH = 32;
private static final boolean LITTLE_ENDIAN = ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN;
- private final FieldReader reader;
+ private Supplier reader;
private final int precision;
private final int scale;
@@ -85,7 +86,11 @@ public Decimal256Vector(String name, FieldType fieldType, BufferAllocator alloca
public Decimal256Vector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
ArrowType.Decimal arrowType = (ArrowType.Decimal) field.getFieldType().getType();
- reader = new Decimal256ReaderImpl(Decimal256Vector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new Decimal256ReaderImpl(Decimal256Vector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
this.precision = arrowType.getPrecision();
this.scale = arrowType.getScale();
}
@@ -97,7 +102,7 @@ public Decimal256Vector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -544,6 +549,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -563,6 +580,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
Decimal256Vector.this.scale);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new Decimal256Vector(field, allocator);
+ }
+
public TransferImpl(Decimal256Vector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
index 3fa9152a260..ae7d6dd4e83 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
@@ -21,6 +21,7 @@
import java.math.BigDecimal;
import java.nio.ByteOrder;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -45,7 +46,7 @@ public final class DecimalVector extends BaseFixedWidthVector {
public static final int MAX_PRECISION = 38;
public static final byte TYPE_WIDTH = 16;
private static final boolean LITTLE_ENDIAN = ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN;
- private final FieldReader reader;
+ private Supplier reader;
private final int precision;
private final int scale;
@@ -84,7 +85,11 @@ public DecimalVector(String name, FieldType fieldType, BufferAllocator allocator
public DecimalVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
ArrowType.Decimal arrowType = (ArrowType.Decimal) field.getFieldType().getType();
- reader = new DecimalReaderImpl(DecimalVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new DecimalReaderImpl(DecimalVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
this.precision = arrowType.getPrecision();
this.scale = arrowType.getScale();
}
@@ -96,7 +101,7 @@ public DecimalVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -543,6 +548,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -562,6 +579,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
DecimalVector.this.scale);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new DecimalVector(field, allocator);
+ }
+
public TransferImpl(DecimalVector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java
index 9671b34e002..aa6a71d89df 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java
@@ -21,6 +21,7 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.Duration;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -43,7 +44,7 @@
*/
public final class DurationVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 8;
- private final FieldReader reader;
+ private Supplier reader;
private final TimeUnit unit;
@@ -68,7 +69,11 @@ public DurationVector(String name, FieldType fieldType, BufferAllocator allocato
*/
public DurationVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new DurationReaderImpl(DurationVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new DurationReaderImpl(DurationVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
this.unit = ((ArrowType.Duration) field.getFieldType().getType()).getUnit();
}
@@ -79,7 +84,7 @@ public DurationVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -361,6 +366,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -379,6 +396,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new DurationVector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new DurationVector(field, allocator);
+ }
+
public TransferImpl(DurationVector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java b/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
index e1847e4bb94..daefb799b82 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.util.Preconditions;
@@ -39,7 +41,7 @@
*/
public class FixedSizeBinaryVector extends BaseFixedWidthVector {
private final int byteWidth;
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a FixedSizeBinaryVector. This doesn't allocate any memory for
@@ -74,7 +76,11 @@ public FixedSizeBinaryVector(String name, FieldType fieldType, BufferAllocator a
*/
public FixedSizeBinaryVector(Field field, BufferAllocator allocator) {
super(field, allocator, ((FixedSizeBinary) field.getFieldType().getType()).getByteWidth());
- reader = new FixedSizeBinaryReaderImpl(FixedSizeBinaryVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new FixedSizeBinaryReaderImpl(FixedSizeBinaryVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
byteWidth = ((FixedSizeBinary) field.getFieldType().getType()).getByteWidth();
}
@@ -85,7 +91,7 @@ public FixedSizeBinaryVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -341,6 +347,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -359,6 +377,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new FixedSizeBinaryVector(ref, allocator, FixedSizeBinaryVector.this.byteWidth);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new FixedSizeBinaryVector(field, allocator);
+ }
+
public TransferImpl(FixedSizeBinaryVector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
index 365a1529bb0..42c7069465e 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.Float4ReaderImpl;
@@ -37,7 +39,7 @@
*/
public final class Float4Vector extends BaseFixedWidthVector implements FloatingPointVector {
public static final byte TYPE_WIDTH = 4;
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a Float4Vector. This doesn't allocate any memory for
@@ -71,7 +73,11 @@ public Float4Vector(String name, FieldType fieldType, BufferAllocator allocator)
*/
public Float4Vector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new Float4ReaderImpl(Float4Vector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new Float4ReaderImpl(Float4Vector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -81,7 +87,7 @@ public Float4Vector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -316,6 +322,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -334,6 +352,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new Float4Vector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new Float4Vector(field, allocator);
+ }
+
public TransferImpl(Float4Vector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
index 948390d46f2..2cb563cfdd0 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.Float8ReaderImpl;
@@ -37,7 +39,7 @@
*/
public final class Float8Vector extends BaseFixedWidthVector implements FloatingPointVector {
public static final byte TYPE_WIDTH = 8;
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a Float8Vector. This doesn't allocate any memory for
@@ -71,7 +73,11 @@ public Float8Vector(String name, FieldType fieldType, BufferAllocator allocator)
*/
public Float8Vector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new Float8ReaderImpl(Float8Vector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new Float8ReaderImpl(Float8Vector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -81,7 +87,7 @@ public Float8Vector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -317,6 +323,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -335,6 +353,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new Float8Vector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new Float8Vector(field, allocator);
+ }
+
public TransferImpl(Float8Vector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
index e591ec1e857..e34b3365dad 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.IntReaderImpl;
@@ -37,7 +39,7 @@
*/
public final class IntVector extends BaseFixedWidthVector implements BaseIntVector {
public static final byte TYPE_WIDTH = 4;
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a IntVector. This doesn't allocate any memory for
@@ -71,7 +73,11 @@ public IntVector(String name, FieldType fieldType, BufferAllocator allocator) {
*/
public IntVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new IntReaderImpl(IntVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new IntReaderImpl(IntVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -81,7 +87,7 @@ public IntVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -302,6 +308,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -335,6 +353,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new IntVector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new IntVector(field, allocator);
+ }
+
public TransferImpl(IntVector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
index 0dc860e6b8d..49dffcef135 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
@@ -20,6 +20,7 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.Duration;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -41,7 +42,7 @@
public final class IntervalDayVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 8;
private static final byte MILLISECOND_OFFSET = 4;
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a IntervalDayVector. This doesn't allocate any memory for
@@ -75,7 +76,11 @@ public IntervalDayVector(String name, FieldType fieldType, BufferAllocator alloc
*/
public IntervalDayVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new IntervalDayReaderImpl(IntervalDayVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new IntervalDayReaderImpl(IntervalDayVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -85,7 +90,7 @@ public IntervalDayVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -388,6 +393,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -406,6 +423,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new IntervalDayVector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new IntervalDayVector(field, allocator);
+ }
+
public TransferImpl(IntervalDayVector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java
index ba3a26a8946..b4ba9f501b1 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java
@@ -21,6 +21,7 @@
import java.time.Duration;
import java.time.Period;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -46,7 +47,7 @@ public final class IntervalMonthDayNanoVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 16;
private static final byte DAY_OFFSET = 4;
private static final byte NANOSECOND_OFFSET = 8;
- private final FieldReader reader;
+ private Supplier reader;
/**
@@ -81,7 +82,11 @@ public IntervalMonthDayNanoVector(String name, FieldType fieldType, BufferAlloca
*/
public IntervalMonthDayNanoVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new IntervalMonthDayNanoReaderImpl(IntervalMonthDayNanoVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new IntervalMonthDayNanoReaderImpl(IntervalMonthDayNanoVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -91,7 +96,7 @@ public IntervalMonthDayNanoVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -397,6 +402,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -415,6 +432,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new IntervalMonthDayNanoVector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new IntervalMonthDayNanoVector(field, allocator);
+ }
+
public TransferImpl(IntervalMonthDayNanoVector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
index 7ddfe6b78b1..b4e1de8d026 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
@@ -20,6 +20,7 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.Period;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -39,7 +40,7 @@
*/
public final class IntervalYearVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 4;
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a IntervalYearVector. This doesn't allocate any memory for
@@ -73,7 +74,11 @@ public IntervalYearVector(String name, FieldType fieldType, BufferAllocator allo
*/
public IntervalYearVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new IntervalYearReaderImpl(IntervalYearVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new IntervalYearReaderImpl(IntervalYearVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -83,7 +88,7 @@ public IntervalYearVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -337,6 +342,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -355,6 +372,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new IntervalYearVector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new IntervalYearVector(field, allocator);
+ }
+
public TransferImpl(IntervalYearVector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
index 1de6dea90f8..2c835804ff7 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.SmallIntReaderImpl;
@@ -37,7 +39,7 @@
*/
public final class SmallIntVector extends BaseFixedWidthVector implements BaseIntVector {
public static final byte TYPE_WIDTH = 2;
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a SmallIntVector. This doesn't allocate any memory for
@@ -71,7 +73,11 @@ public SmallIntVector(String name, FieldType fieldType, BufferAllocator allocato
*/
public SmallIntVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new SmallIntReaderImpl(SmallIntVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new SmallIntReaderImpl(SmallIntVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -81,7 +87,7 @@ public SmallIntVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -329,6 +335,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -362,6 +380,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new SmallIntVector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new SmallIntVector(field, allocator);
+ }
+
public TransferImpl(SmallIntVector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
index cf128859e4c..e127d63a6a8 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeMicroReaderImpl;
@@ -38,7 +40,7 @@
*/
public final class TimeMicroVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 8;
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a TimeMicroVector. This doesn't allocate any memory for
@@ -72,7 +74,11 @@ public TimeMicroVector(String name, FieldType fieldType, BufferAllocator allocat
*/
public TimeMicroVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new TimeMicroReaderImpl(TimeMicroVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeMicroReaderImpl(TimeMicroVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -82,7 +88,7 @@ public TimeMicroVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -302,6 +308,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -320,6 +338,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new TimeMicroVector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new TimeMicroVector(field, allocator);
+ }
+
public TransferImpl(TimeMicroVector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
index b96990b1060..4fa46057d68 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
@@ -20,6 +20,7 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -40,7 +41,7 @@
*/
public final class TimeMilliVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 4;
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a TimeMilliVector. This doesn't allocate any memory for
@@ -74,7 +75,11 @@ public TimeMilliVector(String name, FieldType fieldType, BufferAllocator allocat
*/
public TimeMilliVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new TimeMilliReaderImpl(TimeMilliVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeMilliReaderImpl(TimeMilliVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -84,7 +89,7 @@ public TimeMilliVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -306,6 +311,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -324,6 +341,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new TimeMilliVector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new TimeMilliVector(field, allocator);
+ }
+
public TransferImpl(TimeMilliVector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
index bc78a026461..1a2a1755d23 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeNanoReaderImpl;
@@ -37,7 +39,7 @@
*/
public final class TimeNanoVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 8;
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a TimeNanoVector. This doesn't allocate any memory for
@@ -71,7 +73,11 @@ public TimeNanoVector(String name, FieldType fieldType, BufferAllocator allocato
*/
public TimeNanoVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new TimeNanoReaderImpl(TimeNanoVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeNanoReaderImpl(TimeNanoVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -81,7 +87,7 @@ public TimeNanoVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -302,6 +308,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -320,6 +338,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new TimeNanoVector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new TimeNanoVector(field, allocator);
+ }
+
public TransferImpl(TimeNanoVector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
index 29b7381be31..00336c2e4e4 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeSecReaderImpl;
@@ -37,7 +39,7 @@
*/
public final class TimeSecVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 4;
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a TimeSecVector. This doesn't allocate any memory for
@@ -71,7 +73,11 @@ public TimeSecVector(String name, FieldType fieldType, BufferAllocator allocator
*/
public TimeSecVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new TimeSecReaderImpl(TimeSecVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeSecReaderImpl(TimeSecVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -81,7 +87,7 @@ public TimeSecVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -303,6 +309,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -321,6 +339,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new TimeSecVector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new TimeSecVector(field, allocator);
+ }
+
public TransferImpl(TimeSecVector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java
index d08b3523067..0e50160fa4e 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampMicroTZReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -37,7 +39,7 @@
* (bit vector) is maintained to track which elements in the vector are null.
*/
public final class TimeStampMicroTZVector extends TimeStampVector {
- private final FieldReader reader;
+ private Supplier reader;
private final String timeZone;
/**
@@ -63,7 +65,11 @@ public TimeStampMicroTZVector(String name, FieldType fieldType, BufferAllocator
super(name, fieldType, allocator);
ArrowType.Timestamp arrowType = (ArrowType.Timestamp) fieldType.getType();
timeZone = arrowType.getTimezone();
- reader = new TimeStampMicroTZReaderImpl(TimeStampMicroTZVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeStampMicroTZReaderImpl(TimeStampMicroTZVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -77,7 +83,11 @@ public TimeStampMicroTZVector(Field field, BufferAllocator allocator) {
super(field, allocator);
ArrowType.Timestamp arrowType = (ArrowType.Timestamp) field.getFieldType().getType();
timeZone = arrowType.getTimezone();
- reader = new TimeStampMicroTZReaderImpl(TimeStampMicroTZVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeStampMicroTZReaderImpl(TimeStampMicroTZVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -87,7 +97,7 @@ public TimeStampMicroTZVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -235,6 +245,19 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(to);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ TimeStampMicroTZVector to = new TimeStampMicroTZVector(field, allocator);
+ return new TransferImpl(to);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java
index 5cbef896264..9d484d585e0 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java
@@ -20,6 +20,7 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
+import java.util.function.Supplier;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampMicroReaderImpl;
@@ -38,7 +39,7 @@
* (bit vector) is maintained to track which elements in the vector are null.
*/
public final class TimeStampMicroVector extends TimeStampVector {
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a TimeStampMicroVector. This doesn't allocate any memory for
@@ -61,7 +62,11 @@ public TimeStampMicroVector(String name, BufferAllocator allocator) {
*/
public TimeStampMicroVector(String name, FieldType fieldType, BufferAllocator allocator) {
super(name, fieldType, allocator);
- reader = new TimeStampMicroReaderImpl(TimeStampMicroVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeStampMicroReaderImpl(TimeStampMicroVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -73,7 +78,11 @@ public TimeStampMicroVector(String name, FieldType fieldType, BufferAllocator al
*/
public TimeStampMicroVector(Field field, BufferAllocator allocator) {
super(field, allocator);
- reader = new TimeStampMicroReaderImpl(TimeStampMicroVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeStampMicroReaderImpl(TimeStampMicroVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -83,7 +92,7 @@ public TimeStampMicroVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -223,6 +232,19 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(to);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ TimeStampMicroVector to = new TimeStampMicroVector(field, allocator);
+ return new TransferImpl(to);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java
index 1151d064e25..0f4c6691c6b 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampMilliTZReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -37,7 +39,7 @@
* (bit vector) is maintained to track which elements in the vector are null.
*/
public final class TimeStampMilliTZVector extends TimeStampVector {
- private final FieldReader reader;
+ private Supplier reader;
private final String timeZone;
/**
@@ -63,7 +65,11 @@ public TimeStampMilliTZVector(String name, FieldType fieldType, BufferAllocator
super(name, fieldType, allocator);
ArrowType.Timestamp arrowType = (ArrowType.Timestamp) fieldType.getType();
timeZone = arrowType.getTimezone();
- reader = new TimeStampMilliTZReaderImpl(TimeStampMilliTZVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeStampMilliTZReaderImpl(TimeStampMilliTZVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -77,7 +83,11 @@ public TimeStampMilliTZVector(Field field, BufferAllocator allocator) {
super(field, allocator);
ArrowType.Timestamp arrowType = (ArrowType.Timestamp) field.getFieldType().getType();
timeZone = arrowType.getTimezone();
- reader = new TimeStampMilliTZReaderImpl(TimeStampMilliTZVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeStampMilliTZReaderImpl(TimeStampMilliTZVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -87,7 +97,7 @@ public TimeStampMilliTZVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -234,6 +244,19 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(to);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ TimeStampMilliTZVector to = new TimeStampMilliTZVector(field, allocator);
+ return new TransferImpl(to);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java
index 8f46f5606df..b1a513f2d52 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java
@@ -20,6 +20,7 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
+import java.util.function.Supplier;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampMilliReaderImpl;
@@ -38,7 +39,7 @@
* (bit vector) is maintained to track which elements in the vector are null.
*/
public final class TimeStampMilliVector extends TimeStampVector {
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a TimeStampMilliVector. This doesn't allocate any memory for
@@ -61,7 +62,11 @@ public TimeStampMilliVector(String name, BufferAllocator allocator) {
*/
public TimeStampMilliVector(String name, FieldType fieldType, BufferAllocator allocator) {
super(name, fieldType, allocator);
- reader = new TimeStampMilliReaderImpl(TimeStampMilliVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeStampMilliReaderImpl(TimeStampMilliVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -73,7 +78,11 @@ public TimeStampMilliVector(String name, FieldType fieldType, BufferAllocator al
*/
public TimeStampMilliVector(Field field, BufferAllocator allocator) {
super(field, allocator);
- reader = new TimeStampMilliReaderImpl(TimeStampMilliVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeStampMilliReaderImpl(TimeStampMilliVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -83,7 +92,7 @@ public TimeStampMilliVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -223,6 +232,19 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(to);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ TimeStampMilliVector to = new TimeStampMilliVector(field, allocator);
+ return new TransferImpl(to);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java
index b19b437781f..ce76b0230a4 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampNanoTZReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -37,7 +39,7 @@
* (bit vector) is maintained to track which elements in the vector are null.
*/
public final class TimeStampNanoTZVector extends TimeStampVector {
- private final FieldReader reader;
+ private Supplier reader;
private final String timeZone;
/**
@@ -63,7 +65,11 @@ public TimeStampNanoTZVector(String name, FieldType fieldType, BufferAllocator a
super(name, fieldType, allocator);
ArrowType.Timestamp arrowType = (ArrowType.Timestamp) fieldType.getType();
timeZone = arrowType.getTimezone();
- reader = new TimeStampNanoTZReaderImpl(TimeStampNanoTZVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeStampNanoTZReaderImpl(TimeStampNanoTZVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -77,7 +83,11 @@ public TimeStampNanoTZVector(Field field, BufferAllocator allocator) {
super(field, allocator);
ArrowType.Timestamp arrowType = (ArrowType.Timestamp) field.getFieldType().getType();
timeZone = arrowType.getTimezone();
- reader = new TimeStampNanoTZReaderImpl(TimeStampNanoTZVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeStampNanoTZReaderImpl(TimeStampNanoTZVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -87,7 +97,7 @@ public TimeStampNanoTZVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -237,6 +247,19 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(to);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ TimeStampNanoTZVector to = new TimeStampNanoTZVector(field, allocator);
+ return new TransferImpl(to);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java
index 7b87dac4377..84362f446b3 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java
@@ -20,6 +20,7 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
+import java.util.function.Supplier;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampNanoReaderImpl;
@@ -38,7 +39,7 @@
* (bit vector) is maintained to track which elements in the vector are null.
*/
public final class TimeStampNanoVector extends TimeStampVector {
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a TimeStampNanoVector. This doesn't allocate any memory for
@@ -61,7 +62,11 @@ public TimeStampNanoVector(String name, BufferAllocator allocator) {
*/
public TimeStampNanoVector(String name, FieldType fieldType, BufferAllocator allocator) {
super(name, fieldType, allocator);
- reader = new TimeStampNanoReaderImpl(TimeStampNanoVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeStampNanoReaderImpl(TimeStampNanoVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -73,7 +78,11 @@ public TimeStampNanoVector(String name, FieldType fieldType, BufferAllocator all
*/
public TimeStampNanoVector(Field field, BufferAllocator allocator) {
super(field, allocator);
- reader = new TimeStampNanoReaderImpl(TimeStampNanoVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeStampNanoReaderImpl(TimeStampNanoVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -83,7 +92,7 @@ public TimeStampNanoVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -223,6 +232,19 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(to);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ TimeStampNanoVector to = new TimeStampNanoVector(field, allocator);
+ return new TransferImpl(to);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java
index 1ffdb55c7a5..a1d06582aec 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampSecTZReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -37,7 +39,7 @@
* (bit vector) is maintained to track which elements in the vector are null.
*/
public final class TimeStampSecTZVector extends TimeStampVector {
- private final FieldReader reader;
+ private Supplier reader;
private final String timeZone;
/**
@@ -63,7 +65,11 @@ public TimeStampSecTZVector(String name, FieldType fieldType, BufferAllocator al
super(name, fieldType, allocator);
ArrowType.Timestamp arrowType = (ArrowType.Timestamp) fieldType.getType();
timeZone = arrowType.getTimezone();
- reader = new TimeStampSecTZReaderImpl(TimeStampSecTZVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeStampSecTZReaderImpl(TimeStampSecTZVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -77,7 +83,11 @@ public TimeStampSecTZVector(Field field, BufferAllocator allocator) {
super(field, allocator);
ArrowType.Timestamp arrowType = (ArrowType.Timestamp) field.getFieldType().getType();
timeZone = arrowType.getTimezone();
- reader = new TimeStampSecTZReaderImpl(TimeStampSecTZVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeStampSecTZReaderImpl(TimeStampSecTZVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -87,7 +97,7 @@ public TimeStampSecTZVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -234,6 +244,19 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(to);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ TimeStampSecTZVector to = new TimeStampSecTZVector(field, allocator);
+ return new TransferImpl(to);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java
index f12e19684be..024b3085129 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java
@@ -20,6 +20,7 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
+import java.util.function.Supplier;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampSecReaderImpl;
@@ -38,7 +39,7 @@
* maintained to track which elements in the vector are null.
*/
public final class TimeStampSecVector extends TimeStampVector {
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a TimeStampSecVector. This doesn't allocate any memory for
@@ -61,7 +62,11 @@ public TimeStampSecVector(String name, BufferAllocator allocator) {
*/
public TimeStampSecVector(String name, FieldType fieldType, BufferAllocator allocator) {
super(name, fieldType, allocator);
- reader = new TimeStampSecReaderImpl(TimeStampSecVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeStampSecReaderImpl(TimeStampSecVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -73,7 +78,11 @@ public TimeStampSecVector(String name, FieldType fieldType, BufferAllocator allo
*/
public TimeStampSecVector(Field field, BufferAllocator allocator) {
super(field, allocator);
- reader = new TimeStampSecReaderImpl(TimeStampSecVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TimeStampSecReaderImpl(TimeStampSecVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -83,7 +92,7 @@ public TimeStampSecVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -224,6 +233,19 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(to);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ TimeStampSecVector to = new TimeStampSecVector(field, allocator);
+ return new TransferImpl(to);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
index f08b0e02f81..12c0d810de7 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TinyIntReaderImpl;
@@ -37,7 +39,7 @@
*/
public final class TinyIntVector extends BaseFixedWidthVector implements BaseIntVector {
public static final byte TYPE_WIDTH = 1;
- private final FieldReader reader;
+ private Supplier reader;
/**
* Instantiate a TinyIntVector. This doesn't allocate any memory for
@@ -71,7 +73,11 @@ public TinyIntVector(String name, FieldType fieldType, BufferAllocator allocator
*/
public TinyIntVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new TinyIntReaderImpl(TinyIntVector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new TinyIntReaderImpl(TinyIntVector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
/**
@@ -81,7 +87,7 @@ public TinyIntVector(Field field, BufferAllocator allocator) {
*/
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
/**
@@ -330,6 +336,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
/**
* Construct a TransferPair with a desired target vector of the same type.
*
@@ -363,6 +381,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new TinyIntVector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new TinyIntVector(field, allocator);
+ }
+
public TransferImpl(TinyIntVector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
index bd9a732c108..0aeaea4af65 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt1ReaderImpl;
@@ -48,7 +50,7 @@ public final class UInt1Vector extends BaseFixedWidthVector implements BaseIntVe
public static final byte MAX_UINT1 = (byte) 0XFF;
public static final byte TYPE_WIDTH = 1;
- private final FieldReader reader;
+ private Supplier reader;
public UInt1Vector(String name, BufferAllocator allocator) {
this(name, FieldType.nullable(MinorType.UINT1.getType()), allocator);
@@ -58,14 +60,23 @@ public UInt1Vector(String name, FieldType fieldType, BufferAllocator allocator)
this(new Field(name, fieldType, null), allocator);
}
+ /**
+ * Constructor for UInt1Vector.
+ * @param field Field type
+ * @param allocator Allocator type
+ */
public UInt1Vector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new UInt1ReaderImpl(UInt1Vector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new UInt1ReaderImpl(UInt1Vector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
@Override
@@ -309,6 +320,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
@Override
public TransferPair makeTransferPair(ValueVector to) {
return new TransferImpl((UInt1Vector) to);
@@ -341,6 +364,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new UInt1Vector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new UInt1Vector(field, allocator);
+ }
+
public TransferImpl(UInt1Vector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
index 5c29ab6b321..57258fa1652 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt2ReaderImpl;
@@ -44,7 +46,7 @@ public final class UInt2Vector extends BaseFixedWidthVector implements BaseIntVe
public static final char MAX_UINT2 = (char) 0XFFFF;
public static final byte TYPE_WIDTH = 2;
- private final FieldReader reader;
+ private Supplier reader;
public UInt2Vector(String name, BufferAllocator allocator) {
this(name, FieldType.nullable(MinorType.UINT2.getType()), allocator);
@@ -54,14 +56,23 @@ public UInt2Vector(String name, FieldType fieldType, BufferAllocator allocator)
this(new Field(name, fieldType, null), allocator);
}
+ /**
+ * Constructor for UInt2Vector type.
+ * @param field Field type
+ * @param allocator Allocator type
+ */
public UInt2Vector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new UInt2ReaderImpl(UInt2Vector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new UInt2ReaderImpl(UInt2Vector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
@Override
@@ -286,6 +297,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
@Override
public TransferPair makeTransferPair(ValueVector to) {
return new TransferImpl((UInt2Vector) to);
@@ -319,6 +342,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new UInt2Vector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new UInt2Vector(field, allocator);
+ }
+
public TransferImpl(UInt2Vector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
index cc954d67ddd..80f3f91add6 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt4ReaderImpl;
@@ -49,7 +51,7 @@ public final class UInt4Vector extends BaseFixedWidthVector implements BaseIntVe
public static final int MAX_UINT4 = 0XFFFFFFFF;
public static final byte TYPE_WIDTH = 4;
- private final FieldReader reader;
+ private Supplier reader;
public UInt4Vector(String name, BufferAllocator allocator) {
this(name, FieldType.nullable(MinorType.UINT4.getType()), allocator);
@@ -59,14 +61,23 @@ public UInt4Vector(String name, FieldType fieldType, BufferAllocator allocator)
this(new Field(name, fieldType, null), allocator);
}
+ /**
+ * Constructor for UInt4Vector.
+ * @param field Field type
+ * @param allocator Allocator type
+ */
public UInt4Vector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new UInt4ReaderImpl(UInt4Vector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new UInt4ReaderImpl(UInt4Vector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
@Override
@@ -281,6 +292,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
@Override
public TransferPair makeTransferPair(ValueVector to) {
return new TransferImpl((UInt4Vector) to);
@@ -313,6 +336,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new UInt4Vector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new UInt4Vector(field, allocator);
+ }
+
public TransferImpl(UInt4Vector to) {
this.to = to;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
index 98eaf25a6e2..251c77727f6 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
@@ -20,6 +20,7 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.math.BigInteger;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -46,7 +47,7 @@ public final class UInt8Vector extends BaseFixedWidthVector implements BaseIntVe
public static final long MAX_UINT8 = 0XFFFFFFFFFFFFFFFFL;
public static final byte TYPE_WIDTH = 8;
- private final FieldReader reader;
+ private Supplier reader;
public UInt8Vector(String name, BufferAllocator allocator) {
this(name, FieldType.nullable(MinorType.UINT8.getType()), allocator);
@@ -56,14 +57,23 @@ public UInt8Vector(String name, FieldType fieldType, BufferAllocator allocator)
this(new Field(name, fieldType, null), allocator);
}
+ /**
+ * Constructor for UInt8Vector.
+ * @param field Field type
+ * @param allocator Allocator type.
+ */
public UInt8Vector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = new UInt8ReaderImpl(UInt8Vector.this);
+ reader = () -> {
+ final FieldReader fieldReader = new UInt8ReaderImpl(UInt8Vector.this);
+ reader = () -> fieldReader;
+ return fieldReader;
+ };
}
@Override
public FieldReader getReader() {
- return reader;
+ return reader.get();
}
@Override
@@ -277,6 +287,18 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
return new TransferImpl(ref, allocator);
}
+ /**
+ * Construct a TransferPair comprising of this and a target vector of
+ * the same type.
+ *
+ * @param field Field object used by the vector
+ * @return {@link TransferPair}
+ */
+ @Override
+ public TransferPair getTransferPair(Field field, BufferAllocator allocator) {
+ return new TransferImpl(field, allocator);
+ }
+
@Override
public TransferPair makeTransferPair(ValueVector to) {
return new TransferImpl((UInt8Vector) to);
@@ -309,6 +331,10 @@ public TransferImpl(String ref, BufferAllocator allocator) {
to = new UInt8Vector(ref, field.getFieldType(), allocator);
}
+ public TransferImpl(Field field, BufferAllocator allocator) {
+ to = new UInt8Vector(field, allocator);
+ }
+
public TransferImpl(UInt8Vector to) {
this.to = to;
}
diff --git a/java/vector/src/test/java/org/apache/arrow/vector/TestBitVector.java b/java/vector/src/test/java/org/apache/arrow/vector/TestBitVector.java
index 28d56e342be..075a05c04b6 100644
--- a/java/vector/src/test/java/org/apache/arrow/vector/TestBitVector.java
+++ b/java/vector/src/test/java/org/apache/arrow/vector/TestBitVector.java
@@ -19,6 +19,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.util.stream.IntStream;
@@ -540,4 +541,13 @@ public void testBitVectorHashCode() {
assertFalse(hashCodes[1] == hashCodes[2]);
}
}
+
+ @Test
+ public void testGetTransferPairWithField() {
+ final BitVector fromVector = new BitVector(EMPTY_SCHEMA_PATH, allocator);
+ final TransferPair transferPair = fromVector.getTransferPair(fromVector.getField(), allocator);
+ final BitVector toVector = (BitVector) transferPair.getTo();
+ // Field inside a new vector created by reusing a field should be the same in memory as the original field.
+ assertSame(fromVector.getField(), toVector.getField());
+ }
}
diff --git a/java/vector/src/test/java/org/apache/arrow/vector/TestDecimal256Vector.java b/java/vector/src/test/java/org/apache/arrow/vector/TestDecimal256Vector.java
index 82c912cef2f..51368cf6aea 100644
--- a/java/vector/src/test/java/org/apache/arrow/vector/TestDecimal256Vector.java
+++ b/java/vector/src/test/java/org/apache/arrow/vector/TestDecimal256Vector.java
@@ -18,6 +18,7 @@
package org.apache.arrow.vector;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -27,6 +28,7 @@
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.types.pojo.ArrowType;
+import org.apache.arrow.vector.util.TransferPair;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -337,6 +339,15 @@ public void setUsingArrowBufOfBEBytes() {
}
}
+ @Test
+ public void testGetTransferPairWithField() {
+ final Decimal256Vector fromVector = new Decimal256Vector("decimal", allocator, 10, scale);
+ final TransferPair transferPair = fromVector.getTransferPair(fromVector.getField(), allocator);
+ final Decimal256Vector toVector = (Decimal256Vector) transferPair.getTo();
+ // Field inside a new vector created by reusing a field should be the same in memory as the original field.
+ assertSame(fromVector.getField(), toVector.getField());
+ }
+
private void verifyWritingArrowBufWithBigEndianBytes(Decimal256Vector decimalVector,
ArrowBuf buf, BigDecimal[] expectedValues,
int length) {
diff --git a/java/vector/src/test/java/org/apache/arrow/vector/TestDecimalVector.java b/java/vector/src/test/java/org/apache/arrow/vector/TestDecimalVector.java
index c7e3e436e40..ba25cbe8b52 100644
--- a/java/vector/src/test/java/org/apache/arrow/vector/TestDecimalVector.java
+++ b/java/vector/src/test/java/org/apache/arrow/vector/TestDecimalVector.java
@@ -18,6 +18,7 @@
package org.apache.arrow.vector;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -27,6 +28,7 @@
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.types.pojo.ArrowType;
+import org.apache.arrow.vector.util.TransferPair;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -345,6 +347,15 @@ public void setUsingArrowBufOfBEBytes() {
}
}
+ @Test
+ public void testGetTransferPairWithField() {
+ final DecimalVector fromVector = new DecimalVector("decimal", allocator, 10, scale);
+ final TransferPair transferPair = fromVector.getTransferPair(fromVector.getField(), allocator);
+ final DecimalVector toVector = (DecimalVector) transferPair.getTo();
+ // Field inside a new vector created by reusing a field should be the same in memory as the original field.
+ assertSame(fromVector.getField(), toVector.getField());
+ }
+
private void verifyWritingArrowBufWithBigEndianBytes(DecimalVector decimalVector,
ArrowBuf buf, BigDecimal[] expectedValues,
int length) {
diff --git a/java/vector/src/test/java/org/apache/arrow/vector/TestDurationVector.java b/java/vector/src/test/java/org/apache/arrow/vector/TestDurationVector.java
index 8ae876f2011..c5d4d296cc0 100644
--- a/java/vector/src/test/java/org/apache/arrow/vector/TestDurationVector.java
+++ b/java/vector/src/test/java/org/apache/arrow/vector/TestDurationVector.java
@@ -19,6 +19,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
import java.time.Duration;
@@ -26,6 +27,7 @@
import org.apache.arrow.vector.holders.NullableDurationHolder;
import org.apache.arrow.vector.types.TimeUnit;
import org.apache.arrow.vector.types.pojo.ArrowType;
+import org.apache.arrow.vector.util.TransferPair;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -134,4 +136,14 @@ public void testNanosBasics() {
assertEquals(1000000 , holder.value);
}
}
+
+ @Test
+ public void testGetTransferPairWithField() {
+ final DurationVector fromVector = TestUtils.newVector(DurationVector.class, "nanos",
+ new ArrowType.Duration(TimeUnit.NANOSECOND), allocator);
+ final TransferPair transferPair = fromVector.getTransferPair(fromVector.getField(), allocator);
+ final DurationVector toVector = (DurationVector) transferPair.getTo();
+ // Field inside a new vector created by reusing a field should be the same in memory as the original field.
+ assertSame(fromVector.getField(), toVector.getField());
+ }
}
diff --git a/java/vector/src/test/java/org/apache/arrow/vector/TestFixedSizeBinaryVector.java b/java/vector/src/test/java/org/apache/arrow/vector/TestFixedSizeBinaryVector.java
index 363821e9839..67f7ce86b8a 100644
--- a/java/vector/src/test/java/org/apache/arrow/vector/TestFixedSizeBinaryVector.java
+++ b/java/vector/src/test/java/org/apache/arrow/vector/TestFixedSizeBinaryVector.java
@@ -24,6 +24,7 @@
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.holders.FixedSizeBinaryHolder;
import org.apache.arrow.vector.holders.NullableFixedSizeBinaryHolder;
+import org.apache.arrow.vector.util.TransferPair;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -276,4 +277,13 @@ public void testGetNull() {
vector.setNull(0);
assertNull(vector.get(0));
}
+
+ @Test
+ public void testGetTransferPairWithField() {
+ final FixedSizeBinaryVector fromVector = new FixedSizeBinaryVector("fixedSizeBinary", allocator, typeWidth);
+ final TransferPair transferPair = fromVector.getTransferPair(fromVector.getField(), allocator);
+ final FixedSizeBinaryVector toVector = (FixedSizeBinaryVector) transferPair.getTo();
+ // Field inside a new vector created by reusing a field should be the same in memory as the original field.
+ assertSame(fromVector.getField(), toVector.getField());
+ }
}
diff --git a/java/vector/src/test/java/org/apache/arrow/vector/TestIntervalYearVector.java b/java/vector/src/test/java/org/apache/arrow/vector/TestIntervalYearVector.java
index 5ea48b48513..dae713df71e 100644
--- a/java/vector/src/test/java/org/apache/arrow/vector/TestIntervalYearVector.java
+++ b/java/vector/src/test/java/org/apache/arrow/vector/TestIntervalYearVector.java
@@ -18,8 +18,10 @@
package org.apache.arrow.vector;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
import org.apache.arrow.memory.BufferAllocator;
+import org.apache.arrow.vector.util.TransferPair;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -55,4 +57,13 @@ public void testGetAsStringBuilder() {
}
}
+
+ @Test
+ public void testGetTransferPairWithField() {
+ final IntervalYearVector fromVector = new IntervalYearVector("", allocator);
+ final TransferPair transferPair = fromVector.getTransferPair(fromVector.getField(), allocator);
+ final IntervalYearVector toVector = (IntervalYearVector) transferPair.getTo();
+ // Field inside a new vector created by reusing a field should be the same in memory as the original field.
+ assertSame(fromVector.getField(), toVector.getField());
+ }
}
From ca118870cf4edb94344ec00f5908469565c32818 Mon Sep 17 00:00:00 2001
From: Ramasai
Date: Fri, 3 Mar 2023 17:24:03 -0500
Subject: [PATCH 2/9] Fix javadoc to add @param annotation for BufferAllocator
---
.../java/org/apache/arrow/vector/BaseFixedWidthVector.java | 3 ++-
.../src/main/java/org/apache/arrow/vector/BigIntVector.java | 3 ++-
.../src/main/java/org/apache/arrow/vector/BitVector.java | 3 ++-
.../src/main/java/org/apache/arrow/vector/DateDayVector.java | 3 ++-
.../src/main/java/org/apache/arrow/vector/DateMilliVector.java | 3 ++-
.../main/java/org/apache/arrow/vector/Decimal256Vector.java | 3 ++-
.../src/main/java/org/apache/arrow/vector/DecimalVector.java | 3 ++-
.../src/main/java/org/apache/arrow/vector/DurationVector.java | 3 ++-
.../java/org/apache/arrow/vector/FixedSizeBinaryVector.java | 3 ++-
.../src/main/java/org/apache/arrow/vector/Float4Vector.java | 3 ++-
.../src/main/java/org/apache/arrow/vector/Float8Vector.java | 3 ++-
.../src/main/java/org/apache/arrow/vector/IntVector.java | 3 ++-
.../main/java/org/apache/arrow/vector/IntervalDayVector.java | 3 ++-
.../org/apache/arrow/vector/IntervalMonthDayNanoVector.java | 3 ++-
.../main/java/org/apache/arrow/vector/IntervalYearVector.java | 3 ++-
.../src/main/java/org/apache/arrow/vector/SmallIntVector.java | 3 ++-
.../src/main/java/org/apache/arrow/vector/TimeMicroVector.java | 3 ++-
.../src/main/java/org/apache/arrow/vector/TimeMilliVector.java | 3 ++-
.../src/main/java/org/apache/arrow/vector/TimeNanoVector.java | 3 ++-
.../src/main/java/org/apache/arrow/vector/TimeSecVector.java | 3 ++-
.../java/org/apache/arrow/vector/TimeStampMicroTZVector.java | 3 ++-
.../java/org/apache/arrow/vector/TimeStampMicroVector.java | 3 ++-
.../java/org/apache/arrow/vector/TimeStampMilliTZVector.java | 3 ++-
.../java/org/apache/arrow/vector/TimeStampMilliVector.java | 3 ++-
.../java/org/apache/arrow/vector/TimeStampNanoTZVector.java | 3 ++-
.../main/java/org/apache/arrow/vector/TimeStampNanoVector.java | 3 ++-
.../java/org/apache/arrow/vector/TimeStampSecTZVector.java | 3 ++-
.../main/java/org/apache/arrow/vector/TimeStampSecVector.java | 3 ++-
.../src/main/java/org/apache/arrow/vector/TinyIntVector.java | 3 ++-
.../src/main/java/org/apache/arrow/vector/UInt1Vector.java | 3 ++-
.../src/main/java/org/apache/arrow/vector/UInt2Vector.java | 3 ++-
.../src/main/java/org/apache/arrow/vector/UInt4Vector.java | 3 ++-
.../src/main/java/org/apache/arrow/vector/UInt8Vector.java | 3 ++-
33 files changed, 66 insertions(+), 33 deletions(-)
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BaseFixedWidthVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BaseFixedWidthVector.java
index bb697db096e..223ae9aa8cb 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BaseFixedWidthVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BaseFixedWidthVector.java
@@ -582,7 +582,8 @@ public TransferPair getTransferPair(BufferAllocator allocator) {
/**
* Construct a transfer pair of this vector and another vector of same type.
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return TransferPair
*/
public abstract TransferPair getTransferPair(Field field, BufferAllocator allocator);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
index 22140686d6b..d10aea42526 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
@@ -308,7 +308,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
index 3bfae8f7bd2..4ed9772255f 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
@@ -564,7 +564,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
index 6d5ec475437..566fc08ea4d 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
@@ -312,7 +312,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
index 8e76a5e2266..ff1fc1dc2cf 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
@@ -314,7 +314,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java
index 6640aae6847..a0e4bd5893a 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java
@@ -553,7 +553,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
index ae7d6dd4e83..35f1a86b4a5 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
@@ -552,7 +552,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java
index aa6a71d89df..bca66998948 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java
@@ -370,7 +370,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java b/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
index daefb799b82..b9bbcb24d4d 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
@@ -351,7 +351,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
index 42c7069465e..9bfe9892a9d 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
@@ -326,7 +326,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
index 2cb563cfdd0..8f82417bf55 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
@@ -327,7 +327,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
index e34b3365dad..e2c399376ef 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
@@ -312,7 +312,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
index 49dffcef135..bd5cd821966 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
@@ -397,7 +397,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java
index b4ba9f501b1..b9747447355 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java
@@ -406,7 +406,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
index b4e1de8d026..98fcce8a41f 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
@@ -346,7 +346,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
index 2c835804ff7..46a5c45842e 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
@@ -339,7 +339,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
index e127d63a6a8..2a6161a4b51 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
@@ -312,7 +312,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
index 4fa46057d68..4071a2d4451 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
@@ -315,7 +315,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
index 1a2a1755d23..34de1bdecaa 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
@@ -312,7 +312,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
index 00336c2e4e4..2c6030d096a 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
@@ -313,7 +313,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java
index 0e50160fa4e..6450ac3bb97 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java
@@ -249,7 +249,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java
index 9d484d585e0..afcae6a2f48 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java
@@ -236,7 +236,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java
index 0f4c6691c6b..d179775bbac 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java
@@ -248,7 +248,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java
index b1a513f2d52..8b05337b141 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java
@@ -236,7 +236,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java
index ce76b0230a4..e74960aa6eb 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java
@@ -251,7 +251,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java
index 84362f446b3..1d86a254f7d 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java
@@ -236,7 +236,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java
index a1d06582aec..7602cd030d1 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java
@@ -248,7 +248,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java
index 024b3085129..0b0018fd7c0 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java
@@ -237,7 +237,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
index 12c0d810de7..0fc007b9cfa 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
@@ -340,7 +340,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
index 0aeaea4af65..b1be4bdfd16 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
@@ -324,7 +324,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
index 57258fa1652..2acac65789b 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
@@ -301,7 +301,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
index 80f3f91add6..03fa2e682a5 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
@@ -296,7 +296,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
index 251c77727f6..68fd2dc2e19 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
@@ -291,7 +291,8 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
* Construct a TransferPair comprising of this and a target vector of
* the same type.
*
- * @param field Field object used by the vector
+ * @param field Field object used by the target vector
+ * @param allocator allocator for the target vector
* @return {@link TransferPair}
*/
@Override
From 76219f5d276d6dc9a2346461c955d2499877167b Mon Sep 17 00:00:00 2001
From: Ramasai
Date: Sun, 4 Jun 2023 19:40:04 -0400
Subject: [PATCH 3/9] GH-15187: Make reader instantiation thread safe in
BaseValueVector
---
.../apache/arrow/vector/BaseValueVector.java | 41 +++++++++++++++++++
.../org/apache/arrow/vector/BigIntVector.java | 19 ++-------
.../org/apache/arrow/vector/BitVector.java | 22 ++--------
.../apache/arrow/vector/DateDayVector.java | 21 ++--------
.../apache/arrow/vector/DateMilliVector.java | 20 ++-------
.../apache/arrow/vector/Decimal256Vector.java | 20 ++-------
.../apache/arrow/vector/DecimalVector.java | 20 ++-------
.../apache/arrow/vector/DurationVector.java | 18 ++------
.../arrow/vector/ExtensionTypeVector.java | 6 +++
.../arrow/vector/FixedSizeBinaryVector.java | 21 ++--------
.../org/apache/arrow/vector/Float4Vector.java | 21 ++--------
.../org/apache/arrow/vector/Float8Vector.java | 21 ++--------
.../org/apache/arrow/vector/IntVector.java | 21 ++--------
.../arrow/vector/IntervalDayVector.java | 20 ++++-----
.../vector/IntervalMonthDayNanoVector.java | 16 ++------
.../arrow/vector/IntervalYearVector.java | 20 ++-------
.../arrow/vector/LargeVarBinaryVector.java | 11 +----
.../arrow/vector/LargeVarCharVector.java | 10 +----
.../apache/arrow/vector/SmallIntVector.java | 21 ++--------
.../apache/arrow/vector/TimeMicroVector.java | 21 ++--------
.../apache/arrow/vector/TimeMilliVector.java | 20 ++-------
.../apache/arrow/vector/TimeNanoVector.java | 21 ++--------
.../apache/arrow/vector/TimeSecVector.java | 19 ++-------
.../arrow/vector/TimeStampMicroTZVector.java | 23 ++---------
.../arrow/vector/TimeStampMicroVector.java | 25 ++---------
.../arrow/vector/TimeStampMilliTZVector.java | 26 ++----------
.../arrow/vector/TimeStampMilliVector.java | 25 ++---------
.../arrow/vector/TimeStampNanoTZVector.java | 26 ++----------
.../arrow/vector/TimeStampNanoVector.java | 25 ++---------
.../arrow/vector/TimeStampSecTZVector.java | 22 +---------
.../arrow/vector/TimeStampSecVector.java | 25 ++---------
.../apache/arrow/vector/TinyIntVector.java | 21 ++--------
.../org/apache/arrow/vector/UInt1Vector.java | 14 ++-----
.../org/apache/arrow/vector/UInt2Vector.java | 14 ++-----
.../org/apache/arrow/vector/UInt4Vector.java | 14 ++-----
.../org/apache/arrow/vector/UInt8Vector.java | 13 ++----
.../apache/arrow/vector/VarBinaryVector.java | 11 +----
.../apache/arrow/vector/VarCharVector.java | 10 +----
.../vector/complex/FixedSizeListVector.java | 10 +++--
.../arrow/vector/complex/LargeListVector.java | 9 ++--
.../arrow/vector/complex/ListVector.java | 9 ++--
.../arrow/vector/TestIntervalYearVector.java | 2 +-
42 files changed, 198 insertions(+), 576 deletions(-)
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
index 22fe4254ffd..971755f88bb 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
@@ -17,6 +17,7 @@
package org.apache.arrow.vector;
+import java.lang.reflect.InvocationTargetException;
import java.util.Collections;
import java.util.Iterator;
@@ -24,6 +25,7 @@
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.memory.ReferenceManager;
import org.apache.arrow.util.Preconditions;
+import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.util.DataSizeRoundingUtil;
import org.apache.arrow.vector.util.TransferPair;
import org.apache.arrow.vector.util.ValueVectorUtility;
@@ -50,6 +52,8 @@ public abstract class BaseValueVector implements ValueVector {
protected final BufferAllocator allocator;
+ protected volatile FieldReader fieldReader;
+
protected BaseValueVector(BufferAllocator allocator) {
this.allocator = Preconditions.checkNotNull(allocator, "allocator cannot be null");
}
@@ -143,6 +147,43 @@ long computeCombinedBufferSize(int valueCount, int typeWidth) {
return allocator.getRoundingPolicy().getRoundedSize(bufferSize);
}
+ /**
+ * Each vector has a different reader that implements the FieldReader interface. Overridden methods must make
+ * sure to return the correct type of the reader implementation to instantiate the reader properly.
+ *
+ * @return Returns the implementation class type of the vector's reader.
+ */
+ protected abstract Class extends FieldReader> getReaderImplClass();
+
+ /**
+ * Default implementation to create a reader for the vector. Depends on the individual vector
+ * class' implementation of `getReaderImpl()` to initialize the reader appropriately.
+ *
+ * @return Concrete instance of FieldReader by using lazy initialization.
+ */
+ public FieldReader getReader() {
+ FieldReader reader = fieldReader;
+
+ if (reader != null) {
+ return reader;
+ }
+ synchronized (this) {
+ if (fieldReader == null) {
+ try {
+ fieldReader =
+ (FieldReader) Class.forName(getReaderImplClass().getName()).getConstructor(getClass())
+ .newInstance(this);
+ } catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException |
+ InvocationTargetException e) {
+ logger.error("Unable to instantiate FieldReader for {} because of: ", getClass().getSimpleName(), e);
+ throw new RuntimeException(e);
+ }
+ }
+
+ return fieldReader;
+ }
+ }
+
/**
* Container for primitive vectors (1 for the validity bit-mask and one to hold the values).
*/
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
index d10aea42526..d813283298a 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.BigIntReaderImpl;
@@ -39,7 +37,6 @@
*/
public final class BigIntVector extends BaseFixedWidthVector implements BaseIntVector {
public static final byte TYPE_WIDTH = 8;
- private Supplier reader;
/**
* Instantiate a BigIntVector. This doesn't allocate any memory for
@@ -73,21 +70,11 @@ public BigIntVector(String name, FieldType fieldType, BufferAllocator allocator)
*/
public BigIntVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader = new BigIntReaderImpl(BigIntVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return BigIntReaderImpl.class;
}
/**
@@ -292,7 +279,7 @@ public static long get(final ArrowBuf buffer, final int index) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
index 4ed9772255f..329a39e1304 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
@@ -20,8 +20,6 @@
import static org.apache.arrow.memory.util.LargeMemoryUtil.capAtMaxInt;
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.memory.util.ArrowBufPointer;
@@ -48,8 +46,6 @@ public final class BitVector extends BaseFixedWidthVector {
private static final int HASH_CODE_FOR_ONE = 19;
- private Supplier reader;
-
/**
* Instantiate a BitVector. This doesn't allocate any memory for
* the data in vector.
@@ -82,21 +78,11 @@ public BitVector(String name, FieldType fieldType, BufferAllocator allocator) {
*/
public BitVector(Field field, BufferAllocator allocator) {
super(field, allocator, 0);
- reader = () -> {
- final FieldReader fieldReader = new BitReaderImpl(BitVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return BitReaderImpl.class;
}
/**
@@ -548,7 +534,7 @@ public void setRangeToOne(int firstBitIndex, int count) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -561,7 +547,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
index 566fc08ea4d..fa67f2d5a2d 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.DateDayReaderImpl;
@@ -40,7 +38,6 @@
public final class DateDayVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 4;
- private Supplier reader;
/**
* Instantiate a DateDayVector. This doesn't allocate any memory for
@@ -74,21 +71,11 @@ public DateDayVector(String name, FieldType fieldType, BufferAllocator allocator
*/
public DateDayVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader = new DateDayReaderImpl(DateDayVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return DateDayReaderImpl.class;
}
/**
@@ -296,7 +283,7 @@ public static int get(final ArrowBuf buffer, final int index) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -309,7 +296,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
index ff1fc1dc2cf..eb5d3c08067 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
@@ -20,7 +20,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -41,7 +40,6 @@
*/
public final class DateMilliVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 8;
- private Supplier reader;
/**
* Instantiate a DateMilliVector. This doesn't allocate any memory for
@@ -75,21 +73,11 @@ public DateMilliVector(String name, FieldType fieldType, BufferAllocator allocat
*/
public DateMilliVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader = new DateMilliReaderImpl(DateMilliVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return DateMilliReaderImpl.class;
}
/**
@@ -298,7 +286,7 @@ public static long get(final ArrowBuf buffer, final int index) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -311,7 +299,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java
index a0e4bd5893a..c254427b841 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java
@@ -21,7 +21,6 @@
import java.math.BigDecimal;
import java.nio.ByteOrder;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -47,7 +46,6 @@ public final class Decimal256Vector extends BaseFixedWidthVector {
public static final int MAX_PRECISION = 76;
public static final byte TYPE_WIDTH = 32;
private static final boolean LITTLE_ENDIAN = ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN;
- private Supplier reader;
private final int precision;
private final int scale;
@@ -86,23 +84,13 @@ public Decimal256Vector(String name, FieldType fieldType, BufferAllocator alloca
public Decimal256Vector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
ArrowType.Decimal arrowType = (ArrowType.Decimal) field.getFieldType().getType();
- reader = () -> {
- final FieldReader fieldReader = new Decimal256ReaderImpl(Decimal256Vector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
this.precision = arrowType.getPrecision();
this.scale = arrowType.getScale();
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return Decimal256ReaderImpl.class;
}
/**
@@ -537,7 +525,7 @@ public void setSafe(int index, int isSet, long start, ArrowBuf buffer) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -550,7 +538,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
index 35f1a86b4a5..e18bf1a05f5 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
@@ -21,7 +21,6 @@
import java.math.BigDecimal;
import java.nio.ByteOrder;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -46,7 +45,6 @@ public final class DecimalVector extends BaseFixedWidthVector {
public static final int MAX_PRECISION = 38;
public static final byte TYPE_WIDTH = 16;
private static final boolean LITTLE_ENDIAN = ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN;
- private Supplier reader;
private final int precision;
private final int scale;
@@ -85,23 +83,13 @@ public DecimalVector(String name, FieldType fieldType, BufferAllocator allocator
public DecimalVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
ArrowType.Decimal arrowType = (ArrowType.Decimal) field.getFieldType().getType();
- reader = () -> {
- final FieldReader fieldReader = new DecimalReaderImpl(DecimalVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
this.precision = arrowType.getPrecision();
this.scale = arrowType.getScale();
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return DecimalReaderImpl.class;
}
/**
@@ -536,7 +524,7 @@ public void setSafe(int index, int isSet, long start, ArrowBuf buffer) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -549,7 +537,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java
index 69212ef0297..18497d0e7f2 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java
@@ -21,7 +21,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.Duration;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -44,7 +43,6 @@
*/
public final class DurationVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 8;
- private Supplier reader;
private final TimeUnit unit;
@@ -69,22 +67,12 @@ public DurationVector(String name, FieldType fieldType, BufferAllocator allocato
*/
public DurationVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader = new DurationReaderImpl(DurationVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
this.unit = ((ArrowType.Duration) field.getFieldType().getType()).getUnit();
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return DurationReaderImpl.class;
}
/**
@@ -375,7 +363,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/ExtensionTypeVector.java b/java/vector/src/main/java/org/apache/arrow/vector/ExtensionTypeVector.java
index ee5b700f505..b54ce117ba5 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/ExtensionTypeVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/ExtensionTypeVector.java
@@ -130,6 +130,12 @@ public TransferPair makeTransferPair(ValueVector target) {
return underlyingVector.makeTransferPair(target);
}
+ @Override
+ protected Class extends FieldReader> getReaderImplClass() {
+ throw new UnsupportedOperationException("Readers for extension types depend on the underlying vector, " +
+ "asking for a concrete implementation class of the reader type is invalid.");
+ }
+
@Override
public FieldReader getReader() {
return underlyingVector.getReader();
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java b/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
index 2c3b17889ad..b1a0d916459 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.util.Preconditions;
@@ -41,7 +39,6 @@
*/
public class FixedSizeBinaryVector extends BaseFixedWidthVector {
private final int byteWidth;
- private Supplier reader;
/**
* Instantiate a FixedSizeBinaryVector. This doesn't allocate any memory for
@@ -76,22 +73,12 @@ public FixedSizeBinaryVector(String name, FieldType fieldType, BufferAllocator a
*/
public FixedSizeBinaryVector(Field field, BufferAllocator allocator) {
super(field, allocator, ((FixedSizeBinary) field.getFieldType().getType()).getByteWidth());
- reader = () -> {
- final FieldReader fieldReader = new FixedSizeBinaryReaderImpl(FixedSizeBinaryVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
byteWidth = ((FixedSizeBinary) field.getFieldType().getType()).getByteWidth();
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return FixedSizeBinaryReaderImpl.class;
}
/**
@@ -341,7 +328,7 @@ public static byte[] get(final ArrowBuf buffer, final int index, final int byteW
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -354,7 +341,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
index 9bfe9892a9d..fc1883dd825 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.Float4ReaderImpl;
@@ -39,7 +37,6 @@
*/
public final class Float4Vector extends BaseFixedWidthVector implements FloatingPointVector {
public static final byte TYPE_WIDTH = 4;
- private Supplier reader;
/**
* Instantiate a Float4Vector. This doesn't allocate any memory for
@@ -73,21 +70,11 @@ public Float4Vector(String name, FieldType fieldType, BufferAllocator allocator)
*/
public Float4Vector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader = new Float4ReaderImpl(Float4Vector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return Float4ReaderImpl.class;
}
/**
@@ -310,7 +297,7 @@ public double getValueAsDouble(int index) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -323,7 +310,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
index 8f82417bf55..b8750558d43 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.Float8ReaderImpl;
@@ -39,7 +37,6 @@
*/
public final class Float8Vector extends BaseFixedWidthVector implements FloatingPointVector {
public static final byte TYPE_WIDTH = 8;
- private Supplier reader;
/**
* Instantiate a Float8Vector. This doesn't allocate any memory for
@@ -73,21 +70,11 @@ public Float8Vector(String name, FieldType fieldType, BufferAllocator allocator)
*/
public Float8Vector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader = new Float8ReaderImpl(Float8Vector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return Float8ReaderImpl.class;
}
/**
@@ -311,7 +298,7 @@ public double getValueAsDouble(int index) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -324,7 +311,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
index e2c399376ef..2e375403da1 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.IntReaderImpl;
@@ -39,7 +37,6 @@
*/
public final class IntVector extends BaseFixedWidthVector implements BaseIntVector {
public static final byte TYPE_WIDTH = 4;
- private Supplier reader;
/**
* Instantiate a IntVector. This doesn't allocate any memory for
@@ -73,21 +70,11 @@ public IntVector(String name, FieldType fieldType, BufferAllocator allocator) {
*/
public IntVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader = new IntReaderImpl(IntVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return IntReaderImpl.class;
}
/**
@@ -296,7 +283,7 @@ public static int get(final ArrowBuf buffer, final int index) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -309,7 +296,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
index bd5cd821966..89cca38e518 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
@@ -77,20 +77,18 @@ public IntervalDayVector(String name, FieldType fieldType, BufferAllocator alloc
public IntervalDayVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
reader = () -> {
- final FieldReader fieldReader = new IntervalDayReaderImpl(IntervalDayVector.this);
- reader = () -> fieldReader;
+ final FieldReader fieldReader;
+ synchronized (this) {
+ fieldReader = new IntervalDayReaderImpl(IntervalDayVector.this);
+ reader = () -> fieldReader;
+ }
return fieldReader;
};
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return IntervalDayReaderImpl.class;
}
/**
@@ -381,7 +379,7 @@ public void setSafe(int index, int isSet, int days, int milliseconds) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -394,7 +392,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java
index 8da8ec67ca2..b2f2c78ed40 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java
@@ -82,21 +82,11 @@ public IntervalMonthDayNanoVector(String name, FieldType fieldType, BufferAlloca
*/
public IntervalMonthDayNanoVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader = new IntervalMonthDayNanoReaderImpl(IntervalMonthDayNanoVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return IntervalMonthDayNanoReaderImpl.class;
}
/**
@@ -390,7 +380,7 @@ public void setSafe(int index, int isSet, int months, int days,
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
index 98fcce8a41f..571590be71f 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
@@ -20,7 +20,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.Period;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -40,7 +39,6 @@
*/
public final class IntervalYearVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 4;
- private Supplier reader;
/**
* Instantiate a IntervalYearVector. This doesn't allocate any memory for
@@ -74,21 +72,11 @@ public IntervalYearVector(String name, FieldType fieldType, BufferAllocator allo
*/
public IntervalYearVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader = new IntervalYearReaderImpl(IntervalYearVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return IntervalYearReaderImpl.class;
}
/**
@@ -330,7 +318,7 @@ public void setSafe(int index, int isSet, int value) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -343,7 +331,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/LargeVarBinaryVector.java b/java/vector/src/main/java/org/apache/arrow/vector/LargeVarBinaryVector.java
index e9d60b38e7a..fdc49dae0f3 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/LargeVarBinaryVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/LargeVarBinaryVector.java
@@ -34,7 +34,6 @@
* The size of the underlying buffer can be over 2GB.
*/
public final class LargeVarBinaryVector extends BaseLargeVariableWidthVector {
- private final FieldReader reader;
/**
* Instantiate a LargeVarBinaryVector. This doesn't allocate any memory for
@@ -68,17 +67,11 @@ public LargeVarBinaryVector(String name, FieldType fieldType, BufferAllocator al
*/
public LargeVarBinaryVector(Field field, BufferAllocator allocator) {
super(field, allocator);
- reader = new LargeVarBinaryReaderImpl(LargeVarBinaryVector.this);
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader;
+ protected Class extends FieldReader> getReaderImplClass() {
+ return LargeVarBinaryReaderImpl.class;
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/LargeVarCharVector.java b/java/vector/src/main/java/org/apache/arrow/vector/LargeVarCharVector.java
index fd205726011..a4b7a3cf649 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/LargeVarCharVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/LargeVarCharVector.java
@@ -37,7 +37,6 @@
*
*/
public final class LargeVarCharVector extends BaseLargeVariableWidthVector {
- private final FieldReader reader;
/**
* Instantiate a LargeVarCharVector. This doesn't allocate any memory for
@@ -69,16 +68,11 @@ public LargeVarCharVector(String name, FieldType fieldType, BufferAllocator allo
*/
public LargeVarCharVector(Field field, BufferAllocator allocator) {
super(field, allocator);
- reader = new LargeVarCharReaderImpl(LargeVarCharVector.this);
}
- /**
- * Get a reader that supports reading values from this vector.
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader;
+ protected Class extends FieldReader> getReaderImplClass() {
+ return LargeVarCharReaderImpl.class;
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
index 46a5c45842e..438c1b03eb6 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.SmallIntReaderImpl;
@@ -39,7 +37,6 @@
*/
public final class SmallIntVector extends BaseFixedWidthVector implements BaseIntVector {
public static final byte TYPE_WIDTH = 2;
- private Supplier reader;
/**
* Instantiate a SmallIntVector. This doesn't allocate any memory for
@@ -73,21 +70,11 @@ public SmallIntVector(String name, FieldType fieldType, BufferAllocator allocato
*/
public SmallIntVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader = new SmallIntReaderImpl(SmallIntVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return SmallIntReaderImpl.class;
}
/**
@@ -323,7 +310,7 @@ public static short get(final ArrowBuf buffer, final int index) {
*----------------------------------------------------------------*/
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -336,7 +323,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
index 2a6161a4b51..55510911513 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeMicroReaderImpl;
@@ -40,7 +38,6 @@
*/
public final class TimeMicroVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 8;
- private Supplier reader;
/**
* Instantiate a TimeMicroVector. This doesn't allocate any memory for
@@ -74,21 +71,11 @@ public TimeMicroVector(String name, FieldType fieldType, BufferAllocator allocat
*/
public TimeMicroVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader = new TimeMicroReaderImpl(TimeMicroVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return TimeMicroReaderImpl.class;
}
/**
@@ -296,7 +283,7 @@ public static long get(final ArrowBuf buffer, int index) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -309,7 +296,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
index 4071a2d4451..25cd644a84c 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
@@ -20,7 +20,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -41,7 +40,6 @@
*/
public final class TimeMilliVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 4;
- private Supplier reader;
/**
* Instantiate a TimeMilliVector. This doesn't allocate any memory for
@@ -75,21 +73,11 @@ public TimeMilliVector(String name, FieldType fieldType, BufferAllocator allocat
*/
public TimeMilliVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader = new TimeMilliReaderImpl(TimeMilliVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return TimeMilliReaderImpl.class;
}
/**
@@ -299,7 +287,7 @@ public static int get(final ArrowBuf buffer, final int index) {
*----------------------------------------------------------------*/
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -312,7 +300,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
index 34de1bdecaa..7466fa72255 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeNanoReaderImpl;
@@ -39,7 +37,6 @@
*/
public final class TimeNanoVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 8;
- private Supplier reader;
/**
* Instantiate a TimeNanoVector. This doesn't allocate any memory for
@@ -73,21 +70,11 @@ public TimeNanoVector(String name, FieldType fieldType, BufferAllocator allocato
*/
public TimeNanoVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader = new TimeNanoReaderImpl(TimeNanoVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return TimeNanoReaderImpl.class;
}
/**
@@ -296,7 +283,7 @@ public static long get(final ArrowBuf buffer, final int index) {
*----------------------------------------------------------------*/
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -309,7 +296,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
index 2c6030d096a..910824b8eb5 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeSecReaderImpl;
@@ -39,7 +37,6 @@
*/
public final class TimeSecVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 4;
- private Supplier reader;
/**
* Instantiate a TimeSecVector. This doesn't allocate any memory for
@@ -73,21 +70,11 @@ public TimeSecVector(String name, FieldType fieldType, BufferAllocator allocator
*/
public TimeSecVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader = new TimeSecReaderImpl(TimeSecVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return TimeSecReaderImpl.class;
}
/**
@@ -297,7 +284,7 @@ public static int get(final ArrowBuf buffer, final int index) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java
index ea81f905c02..64ed0a1a45b 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java
@@ -65,11 +65,6 @@ public TimeStampMicroTZVector(String name, FieldType fieldType, BufferAllocator
super(name, fieldType, allocator);
ArrowType.Timestamp arrowType = (ArrowType.Timestamp) fieldType.getType();
timeZone = arrowType.getTimezone();
- reader = () -> {
- final FieldReader fieldReader = new TimeStampMicroTZReaderImpl(TimeStampMicroTZVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
/**
@@ -83,21 +78,11 @@ public TimeStampMicroTZVector(Field field, BufferAllocator allocator) {
super(field, allocator);
ArrowType.Timestamp arrowType = (ArrowType.Timestamp) field.getFieldType().getType();
timeZone = arrowType.getTimezone();
- reader = () -> {
- final FieldReader fieldReader = new TimeStampMicroTZReaderImpl(TimeStampMicroTZVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return TimeStampMicroTZReaderImpl.class;
}
/**
@@ -239,7 +224,7 @@ public void setSafe(int index, TimeStampMicroTZHolder holder) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -254,7 +239,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java
index afcae6a2f48..9f72a59e956 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java
@@ -20,7 +20,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
-import java.util.function.Supplier;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampMicroReaderImpl;
@@ -39,7 +38,6 @@
* (bit vector) is maintained to track which elements in the vector are null.
*/
public final class TimeStampMicroVector extends TimeStampVector {
- private Supplier reader;
/**
* Instantiate a TimeStampMicroVector. This doesn't allocate any memory for
@@ -62,11 +60,6 @@ public TimeStampMicroVector(String name, BufferAllocator allocator) {
*/
public TimeStampMicroVector(String name, FieldType fieldType, BufferAllocator allocator) {
super(name, fieldType, allocator);
- reader = () -> {
- final FieldReader fieldReader = new TimeStampMicroReaderImpl(TimeStampMicroVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
/**
@@ -78,21 +71,11 @@ public TimeStampMicroVector(String name, FieldType fieldType, BufferAllocator al
*/
public TimeStampMicroVector(Field field, BufferAllocator allocator) {
super(field, allocator);
- reader = () -> {
- final FieldReader fieldReader = new TimeStampMicroReaderImpl(TimeStampMicroVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return TimeStampMicroReaderImpl.class;
}
/**
@@ -218,7 +201,7 @@ public void setSafe(int index, TimeStampMicroHolder holder) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -233,7 +216,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java
index 73ad7f14fda..da8dbd56645 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampMilliTZReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -39,7 +37,6 @@
* (bit vector) is maintained to track which elements in the vector are null.
*/
public final class TimeStampMilliTZVector extends TimeStampVector {
- private Supplier reader;
private final String timeZone;
/**
@@ -65,11 +62,6 @@ public TimeStampMilliTZVector(String name, FieldType fieldType, BufferAllocator
super(name, fieldType, allocator);
ArrowType.Timestamp arrowType = (ArrowType.Timestamp) fieldType.getType();
timeZone = arrowType.getTimezone();
- reader = () -> {
- final FieldReader fieldReader = new TimeStampMilliTZReaderImpl(TimeStampMilliTZVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
/**
@@ -83,21 +75,11 @@ public TimeStampMilliTZVector(Field field, BufferAllocator allocator) {
super(field, allocator);
ArrowType.Timestamp arrowType = (ArrowType.Timestamp) field.getFieldType().getType();
timeZone = arrowType.getTimezone();
- reader = () -> {
- final FieldReader fieldReader = new TimeStampMilliTZReaderImpl(TimeStampMilliTZVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return TimeStampMilliTZReaderImpl.class;
}
/**
@@ -238,7 +220,7 @@ public void setSafe(int index, TimeStampMilliTZHolder holder) {
*----------------------------------------------------------------*/
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -253,7 +235,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java
index 8b05337b141..8662b67f405 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java
@@ -20,7 +20,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
-import java.util.function.Supplier;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampMilliReaderImpl;
@@ -39,7 +38,6 @@
* (bit vector) is maintained to track which elements in the vector are null.
*/
public final class TimeStampMilliVector extends TimeStampVector {
- private Supplier reader;
/**
* Instantiate a TimeStampMilliVector. This doesn't allocate any memory for
@@ -62,11 +60,6 @@ public TimeStampMilliVector(String name, BufferAllocator allocator) {
*/
public TimeStampMilliVector(String name, FieldType fieldType, BufferAllocator allocator) {
super(name, fieldType, allocator);
- reader = () -> {
- final FieldReader fieldReader = new TimeStampMilliReaderImpl(TimeStampMilliVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
/**
@@ -78,21 +71,11 @@ public TimeStampMilliVector(String name, FieldType fieldType, BufferAllocator al
*/
public TimeStampMilliVector(Field field, BufferAllocator allocator) {
super(field, allocator);
- reader = () -> {
- final FieldReader fieldReader = new TimeStampMilliReaderImpl(TimeStampMilliVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return TimeStampMilliReaderImpl.class;
}
/**
@@ -218,7 +201,7 @@ public void setSafe(int index, TimeStampMilliHolder holder) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -233,7 +216,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java
index d4495c4c471..e8e3da9da02 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampNanoTZReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -39,7 +37,6 @@
* (bit vector) is maintained to track which elements in the vector are null.
*/
public final class TimeStampNanoTZVector extends TimeStampVector {
- private Supplier reader;
private final String timeZone;
/**
@@ -65,11 +62,6 @@ public TimeStampNanoTZVector(String name, FieldType fieldType, BufferAllocator a
super(name, fieldType, allocator);
ArrowType.Timestamp arrowType = (ArrowType.Timestamp) fieldType.getType();
timeZone = arrowType.getTimezone();
- reader = () -> {
- final FieldReader fieldReader = new TimeStampNanoTZReaderImpl(TimeStampNanoTZVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
/**
@@ -83,21 +75,11 @@ public TimeStampNanoTZVector(Field field, BufferAllocator allocator) {
super(field, allocator);
ArrowType.Timestamp arrowType = (ArrowType.Timestamp) field.getFieldType().getType();
timeZone = arrowType.getTimezone();
- reader = () -> {
- final FieldReader fieldReader = new TimeStampNanoTZReaderImpl(TimeStampNanoTZVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return TimeStampNanoTZReaderImpl.class;
}
/**
@@ -241,7 +223,7 @@ public void setSafe(int index, TimeStampNanoTZHolder holder) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -256,7 +238,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java
index 1d86a254f7d..7da1c0920d0 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java
@@ -20,7 +20,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
-import java.util.function.Supplier;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampNanoReaderImpl;
@@ -39,7 +38,6 @@
* (bit vector) is maintained to track which elements in the vector are null.
*/
public final class TimeStampNanoVector extends TimeStampVector {
- private Supplier reader;
/**
* Instantiate a TimeStampNanoVector. This doesn't allocate any memory for
@@ -62,11 +60,6 @@ public TimeStampNanoVector(String name, BufferAllocator allocator) {
*/
public TimeStampNanoVector(String name, FieldType fieldType, BufferAllocator allocator) {
super(name, fieldType, allocator);
- reader = () -> {
- final FieldReader fieldReader = new TimeStampNanoReaderImpl(TimeStampNanoVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
/**
@@ -78,21 +71,11 @@ public TimeStampNanoVector(String name, FieldType fieldType, BufferAllocator all
*/
public TimeStampNanoVector(Field field, BufferAllocator allocator) {
super(field, allocator);
- reader = () -> {
- final FieldReader fieldReader = new TimeStampNanoReaderImpl(TimeStampNanoVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return TimeStampNanoReaderImpl.class;
}
/**
@@ -218,7 +201,7 @@ public void setSafe(int index, TimeStampNanoHolder holder) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -233,7 +216,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java
index c4f2d6da8b3..7c549a83698 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampSecTZReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -39,7 +37,6 @@
* (bit vector) is maintained to track which elements in the vector are null.
*/
public final class TimeStampSecTZVector extends TimeStampVector {
- private Supplier reader;
private final String timeZone;
/**
@@ -65,11 +62,6 @@ public TimeStampSecTZVector(String name, FieldType fieldType, BufferAllocator al
super(name, fieldType, allocator);
ArrowType.Timestamp arrowType = (ArrowType.Timestamp) fieldType.getType();
timeZone = arrowType.getTimezone();
- reader = () -> {
- final FieldReader fieldReader = new TimeStampSecTZReaderImpl(TimeStampSecTZVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
/**
@@ -83,21 +75,11 @@ public TimeStampSecTZVector(Field field, BufferAllocator allocator) {
super(field, allocator);
ArrowType.Timestamp arrowType = (ArrowType.Timestamp) field.getFieldType().getType();
timeZone = arrowType.getTimezone();
- reader = () -> {
- final FieldReader fieldReader = new TimeStampSecTZReaderImpl(TimeStampSecTZVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return TimeStampSecTZReaderImpl.class;
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java
index 0b0018fd7c0..7503c80d924 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java
@@ -20,7 +20,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
-import java.util.function.Supplier;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampSecReaderImpl;
@@ -39,7 +38,6 @@
* maintained to track which elements in the vector are null.
*/
public final class TimeStampSecVector extends TimeStampVector {
- private Supplier reader;
/**
* Instantiate a TimeStampSecVector. This doesn't allocate any memory for
@@ -62,11 +60,6 @@ public TimeStampSecVector(String name, BufferAllocator allocator) {
*/
public TimeStampSecVector(String name, FieldType fieldType, BufferAllocator allocator) {
super(name, fieldType, allocator);
- reader = () -> {
- final FieldReader fieldReader = new TimeStampSecReaderImpl(TimeStampSecVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
/**
@@ -78,21 +71,11 @@ public TimeStampSecVector(String name, FieldType fieldType, BufferAllocator allo
*/
public TimeStampSecVector(Field field, BufferAllocator allocator) {
super(field, allocator);
- reader = () -> {
- final FieldReader fieldReader = new TimeStampSecReaderImpl(TimeStampSecVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return TimeStampSecReaderImpl.class;
}
/**
@@ -219,7 +202,7 @@ public void setSafe(int index, TimeStampSecHolder holder) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -234,7 +217,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
index 0fc007b9cfa..f140bf036fa 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TinyIntReaderImpl;
@@ -39,7 +37,6 @@
*/
public final class TinyIntVector extends BaseFixedWidthVector implements BaseIntVector {
public static final byte TYPE_WIDTH = 1;
- private Supplier reader;
/**
* Instantiate a TinyIntVector. This doesn't allocate any memory for
@@ -73,21 +70,11 @@ public TinyIntVector(String name, FieldType fieldType, BufferAllocator allocator
*/
public TinyIntVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader = new TinyIntReaderImpl(TinyIntVector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return TinyIntReaderImpl.class;
}
/**
@@ -324,7 +311,7 @@ public static byte get(final ArrowBuf buffer, final int index) {
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param ref name of the target vector
@@ -337,7 +324,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
index b1be4bdfd16..b803ba7c35b 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt1ReaderImpl;
@@ -50,7 +48,6 @@ public final class UInt1Vector extends BaseFixedWidthVector implements BaseIntVe
public static final byte MAX_UINT1 = (byte) 0XFF;
public static final byte TYPE_WIDTH = 1;
- private Supplier reader;
public UInt1Vector(String name, BufferAllocator allocator) {
this(name, FieldType.nullable(MinorType.UINT1.getType()), allocator);
@@ -67,16 +64,11 @@ public UInt1Vector(String name, FieldType fieldType, BufferAllocator allocator)
*/
public UInt1Vector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader = new UInt1ReaderImpl(UInt1Vector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return UInt1ReaderImpl.class;
}
@Override
@@ -321,7 +313,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
index 2acac65789b..510f1170265 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt2ReaderImpl;
@@ -46,7 +44,6 @@ public final class UInt2Vector extends BaseFixedWidthVector implements BaseIntVe
public static final char MAX_UINT2 = (char) 0XFFFF;
public static final byte TYPE_WIDTH = 2;
- private Supplier reader;
public UInt2Vector(String name, BufferAllocator allocator) {
this(name, FieldType.nullable(MinorType.UINT2.getType()), allocator);
@@ -63,16 +60,11 @@ public UInt2Vector(String name, FieldType fieldType, BufferAllocator allocator)
*/
public UInt2Vector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader = new UInt2ReaderImpl(UInt2Vector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return UInt2ReaderImpl.class;
}
@Override
@@ -298,7 +290,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
index 03fa2e682a5..ab067079d93 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt4ReaderImpl;
@@ -51,7 +49,6 @@ public final class UInt4Vector extends BaseFixedWidthVector implements BaseIntVe
public static final int MAX_UINT4 = 0XFFFFFFFF;
public static final byte TYPE_WIDTH = 4;
- private Supplier reader;
public UInt4Vector(String name, BufferAllocator allocator) {
this(name, FieldType.nullable(MinorType.UINT4.getType()), allocator);
@@ -68,16 +65,11 @@ public UInt4Vector(String name, FieldType fieldType, BufferAllocator allocator)
*/
public UInt4Vector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader = new UInt4ReaderImpl(UInt4Vector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return UInt4ReaderImpl.class;
}
@Override
@@ -293,7 +285,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
index 68fd2dc2e19..7c8ff6ee491 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
@@ -20,7 +20,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.math.BigInteger;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -47,7 +46,6 @@ public final class UInt8Vector extends BaseFixedWidthVector implements BaseIntVe
public static final long MAX_UINT8 = 0XFFFFFFFFFFFFFFFFL;
public static final byte TYPE_WIDTH = 8;
- private Supplier reader;
public UInt8Vector(String name, BufferAllocator allocator) {
this(name, FieldType.nullable(MinorType.UINT8.getType()), allocator);
@@ -64,16 +62,11 @@ public UInt8Vector(String name, FieldType fieldType, BufferAllocator allocator)
*/
public UInt8Vector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader = new UInt8ReaderImpl(UInt8Vector.this);
- reader = () -> fieldReader;
- return fieldReader;
- };
}
@Override
- public FieldReader getReader() {
- return reader.get();
+ protected Class extends FieldReader> getReaderImplClass() {
+ return UInt8ReaderImpl.class;
}
@Override
@@ -288,7 +281,7 @@ public TransferPair getTransferPair(String ref, BufferAllocator allocator) {
}
/**
- * Construct a TransferPair comprising of this and a target vector of
+ * Construct a TransferPair comprising this and a target vector of
* the same type.
*
* @param field Field object used by the target vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java b/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java
index 798d30fe4a8..8728a37aa79 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java
@@ -35,7 +35,6 @@
* to track which elements in the vector are null.
*/
public final class VarBinaryVector extends BaseVariableWidthVector {
- private final FieldReader reader;
/**
* Instantiate a VarBinaryVector. This doesn't allocate any memory for
@@ -69,17 +68,11 @@ public VarBinaryVector(String name, FieldType fieldType, BufferAllocator allocat
*/
public VarBinaryVector(Field field, BufferAllocator allocator) {
super(field, allocator);
- reader = new VarBinaryReaderImpl(VarBinaryVector.this);
}
- /**
- * Get a reader that supports reading values from this vector.
- *
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader;
+ protected Class extends FieldReader> getReaderImplClass() {
+ return VarBinaryReaderImpl.class;
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java b/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java
index e725e2d2839..505ab9a7e43 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java
@@ -36,7 +36,6 @@
* to track which elements in the vector are null.
*/
public final class VarCharVector extends BaseVariableWidthVector {
- private final FieldReader reader;
/**
* Instantiate a VarCharVector. This doesn't allocate any memory for
@@ -68,16 +67,11 @@ public VarCharVector(String name, FieldType fieldType, BufferAllocator allocator
*/
public VarCharVector(Field field, BufferAllocator allocator) {
super(field, allocator);
- reader = new VarCharReaderImpl(VarCharVector.this);
}
- /**
- * Get a reader that supports reading values from this vector.
- * @return Field Reader for this vector
- */
@Override
- public FieldReader getReader() {
- return reader;
+ protected Class extends FieldReader> getReaderImplClass() {
+ return VarCharReaderImpl.class;
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/complex/FixedSizeListVector.java b/java/vector/src/main/java/org/apache/arrow/vector/complex/FixedSizeListVector.java
index 9b7f6e03060..ed900a97b45 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/complex/FixedSizeListVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/complex/FixedSizeListVector.java
@@ -48,6 +48,7 @@
import org.apache.arrow.vector.compare.VectorVisitor;
import org.apache.arrow.vector.complex.impl.UnionFixedSizeListReader;
import org.apache.arrow.vector.complex.impl.UnionFixedSizeListWriter;
+import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.ipc.message.ArrowFieldNode;
import org.apache.arrow.vector.types.Types.MinorType;
import org.apache.arrow.vector.types.pojo.ArrowType;
@@ -181,11 +182,14 @@ public List getFieldInnerVectors() {
throw new UnsupportedOperationException("There are no inner vectors. Use getFieldBuffers");
}
+ @Override
+ protected Class extends FieldReader> getReaderImplClass() {
+ return UnionFixedSizeListReader.class;
+ }
+
@Override
public UnionFixedSizeListReader getReader() {
- if (reader == null) {
- reader = new UnionFixedSizeListReader(this);
- }
+ reader = (UnionFixedSizeListReader) super.getReader();
return reader;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/complex/LargeListVector.java b/java/vector/src/main/java/org/apache/arrow/vector/complex/LargeListVector.java
index c08c2e496e3..6ab356109aa 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/complex/LargeListVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/complex/LargeListVector.java
@@ -695,11 +695,14 @@ public void copyValueSafe(int from, int to) {
}
}
+ @Override
+ protected Class extends FieldReader> getReaderImplClass() {
+ return UnionLargeListReader.class;
+ }
+
@Override
public UnionLargeListReader getReader() {
- if (reader == null) {
- reader = new UnionLargeListReader(this);
- }
+ reader = (UnionLargeListReader) super.getReader();
return reader;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/complex/ListVector.java b/java/vector/src/main/java/org/apache/arrow/vector/complex/ListVector.java
index 0fa091fb0ce..2c9f5789c4b 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/complex/ListVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/complex/ListVector.java
@@ -566,11 +566,14 @@ public void copyValueSafe(int from, int to) {
}
}
+ @Override
+ protected Class extends FieldReader> getReaderImplClass() {
+ return UnionListReader.class;
+ }
+
@Override
public UnionListReader getReader() {
- if (reader == null) {
- reader = new UnionListReader(this);
- }
+ reader = (UnionListReader) super.getReader();
return reader;
}
diff --git a/java/vector/src/test/java/org/apache/arrow/vector/TestIntervalYearVector.java b/java/vector/src/test/java/org/apache/arrow/vector/TestIntervalYearVector.java
index 43a32a72901..4b2ae2eb3d4 100644
--- a/java/vector/src/test/java/org/apache/arrow/vector/TestIntervalYearVector.java
+++ b/java/vector/src/test/java/org/apache/arrow/vector/TestIntervalYearVector.java
@@ -21,10 +21,10 @@
import static org.junit.Assert.assertSame;
import org.apache.arrow.memory.BufferAllocator;
-import org.apache.arrow.vector.util.TransferPair;
import org.apache.arrow.vector.types.IntervalUnit;
import org.apache.arrow.vector.types.Types;
import org.apache.arrow.vector.types.pojo.ArrowType;
+import org.apache.arrow.vector.util.TransferPair;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
From 7f73e3c616311610ef33c24b1557b431fbdf8501 Mon Sep 17 00:00:00 2001
From: Ramasai
Date: Wed, 14 Jun 2023 19:49:18 -0400
Subject: [PATCH 4/9] GH-15187: Change markdown from devils tick to link
---
.../src/main/java/org/apache/arrow/vector/BaseValueVector.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
index 971755f88bb..2bda9accdf2 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
@@ -157,7 +157,7 @@ long computeCombinedBufferSize(int valueCount, int typeWidth) {
/**
* Default implementation to create a reader for the vector. Depends on the individual vector
- * class' implementation of `getReaderImpl()` to initialize the reader appropriately.
+ * class' implementation of {@link #getReaderImplClass} to initialize the reader appropriately.
*
* @return Concrete instance of FieldReader by using lazy initialization.
*/
From fe52705393e1c9b4934189640b75b653d83ffa3a Mon Sep 17 00:00:00 2001
From: Ramasai
Date: Wed, 14 Jun 2023 19:56:26 -0400
Subject: [PATCH 5/9] GH-15187: Change class instantiation
---
.../main/java/org/apache/arrow/vector/BaseValueVector.java | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
index 2bda9accdf2..80a6a481726 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
@@ -170,10 +170,8 @@ public FieldReader getReader() {
synchronized (this) {
if (fieldReader == null) {
try {
- fieldReader =
- (FieldReader) Class.forName(getReaderImplClass().getName()).getConstructor(getClass())
- .newInstance(this);
- } catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException |
+ fieldReader = getReaderImplClass().getDeclaredConstructor(getClass()).newInstance(this);
+ } catch (NoSuchMethodException | InstantiationException | IllegalAccessException |
InvocationTargetException e) {
logger.error("Unable to instantiate FieldReader for {} because of: ", getClass().getSimpleName(), e);
throw new RuntimeException(e);
From fa745840b679afccee4b2b73a6f0daa31331782d Mon Sep 17 00:00:00 2001
From: Ramasai
Date: Thu, 15 Jun 2023 22:32:03 -0400
Subject: [PATCH 6/9] GH-15187: add new lambda to return implementation of the
reader
---
.../org/apache/arrow/vector/BaseValueVector.java | 14 ++++----------
.../java/org/apache/arrow/vector/BigIntVector.java | 6 ++++--
.../java/org/apache/arrow/vector/BitVector.java | 6 ++++--
.../org/apache/arrow/vector/DateDayVector.java | 6 ++++--
.../org/apache/arrow/vector/DateMilliVector.java | 5 +++--
.../org/apache/arrow/vector/Decimal256Vector.java | 5 +++--
.../org/apache/arrow/vector/DecimalVector.java | 5 +++--
.../org/apache/arrow/vector/DurationVector.java | 5 +++--
.../apache/arrow/vector/ExtensionTypeVector.java | 3 ++-
.../apache/arrow/vector/FixedSizeBinaryVector.java | 6 ++++--
.../java/org/apache/arrow/vector/Float4Vector.java | 6 ++++--
.../java/org/apache/arrow/vector/Float8Vector.java | 6 ++++--
.../java/org/apache/arrow/vector/IntVector.java | 6 ++++--
.../org/apache/arrow/vector/IntervalDayVector.java | 13 ++-----------
.../arrow/vector/IntervalMonthDayNanoVector.java | 5 ++---
.../apache/arrow/vector/IntervalYearVector.java | 5 +++--
.../apache/arrow/vector/LargeVarBinaryVector.java | 6 ++++--
.../apache/arrow/vector/LargeVarCharVector.java | 6 ++++--
.../org/apache/arrow/vector/SmallIntVector.java | 6 ++++--
.../org/apache/arrow/vector/TimeMicroVector.java | 6 ++++--
.../org/apache/arrow/vector/TimeMilliVector.java | 5 +++--
.../org/apache/arrow/vector/TimeNanoVector.java | 6 ++++--
.../org/apache/arrow/vector/TimeSecVector.java | 6 ++++--
.../arrow/vector/TimeStampMicroTZVector.java | 5 ++---
.../apache/arrow/vector/TimeStampMicroVector.java | 5 +++--
.../arrow/vector/TimeStampMilliTZVector.java | 6 ++++--
.../apache/arrow/vector/TimeStampMilliVector.java | 5 +++--
.../apache/arrow/vector/TimeStampNanoTZVector.java | 6 ++++--
.../apache/arrow/vector/TimeStampNanoVector.java | 5 +++--
.../apache/arrow/vector/TimeStampSecTZVector.java | 6 ++++--
.../apache/arrow/vector/TimeStampSecVector.java | 5 +++--
.../org/apache/arrow/vector/TinyIntVector.java | 6 ++++--
.../java/org/apache/arrow/vector/UInt1Vector.java | 6 ++++--
.../java/org/apache/arrow/vector/UInt2Vector.java | 6 ++++--
.../java/org/apache/arrow/vector/UInt4Vector.java | 6 ++++--
.../java/org/apache/arrow/vector/UInt8Vector.java | 5 +++--
.../org/apache/arrow/vector/VarBinaryVector.java | 6 ++++--
.../org/apache/arrow/vector/VarCharVector.java | 6 ++++--
.../arrow/vector/complex/FixedSizeListVector.java | 5 +++--
.../arrow/vector/complex/LargeListVector.java | 5 +++--
.../apache/arrow/vector/complex/ListVector.java | 5 +++--
41 files changed, 142 insertions(+), 100 deletions(-)
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
index 80a6a481726..e9c06efe8d4 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
@@ -17,9 +17,9 @@
package org.apache.arrow.vector;
-import java.lang.reflect.InvocationTargetException;
import java.util.Collections;
import java.util.Iterator;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -153,11 +153,11 @@ long computeCombinedBufferSize(int valueCount, int typeWidth) {
*
* @return Returns the implementation class type of the vector's reader.
*/
- protected abstract Class extends FieldReader> getReaderImplClass();
+ protected abstract Supplier getReaderImpl();
/**
* Default implementation to create a reader for the vector. Depends on the individual vector
- * class' implementation of {@link #getReaderImplClass} to initialize the reader appropriately.
+ * class' implementation of {@link #getReaderImpl} to initialize the reader appropriately.
*
* @return Concrete instance of FieldReader by using lazy initialization.
*/
@@ -169,13 +169,7 @@ public FieldReader getReader() {
}
synchronized (this) {
if (fieldReader == null) {
- try {
- fieldReader = getReaderImplClass().getDeclaredConstructor(getClass()).newInstance(this);
- } catch (NoSuchMethodException | InstantiationException | IllegalAccessException |
- InvocationTargetException e) {
- logger.error("Unable to instantiate FieldReader for {} because of: ", getClass().getSimpleName(), e);
- throw new RuntimeException(e);
- }
+ fieldReader = getReaderImpl().get();
}
return fieldReader;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
index d813283298a..a487d2ac287 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.BigIntReaderImpl;
@@ -73,8 +75,8 @@ public BigIntVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return BigIntReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new BigIntReaderImpl(BigIntVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
index 329a39e1304..e2de9455501 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
@@ -20,6 +20,8 @@
import static org.apache.arrow.memory.util.LargeMemoryUtil.capAtMaxInt;
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.memory.util.ArrowBufPointer;
@@ -81,8 +83,8 @@ public BitVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return BitReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new BitReaderImpl(BitVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
index fa67f2d5a2d..eb01d67d871 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.DateDayReaderImpl;
@@ -74,8 +76,8 @@ public DateDayVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return DateDayReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new DateDayReaderImpl(DateDayVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
index eb5d3c08067..1b61d5789f1 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
@@ -20,6 +20,7 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -76,8 +77,8 @@ public DateMilliVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return DateMilliReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new DateMilliReaderImpl(DateMilliVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java
index c254427b841..0791ba8b816 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java
@@ -21,6 +21,7 @@
import java.math.BigDecimal;
import java.nio.ByteOrder;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -89,8 +90,8 @@ public Decimal256Vector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return Decimal256ReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new Decimal256ReaderImpl(Decimal256Vector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
index e18bf1a05f5..09bf4b9a44d 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
@@ -21,6 +21,7 @@
import java.math.BigDecimal;
import java.nio.ByteOrder;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -88,8 +89,8 @@ public DecimalVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return DecimalReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new DecimalReaderImpl(DecimalVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java
index 18497d0e7f2..65c18f0f91a 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java
@@ -21,6 +21,7 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.Duration;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -71,8 +72,8 @@ public DurationVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return DurationReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new DurationReaderImpl(DurationVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/ExtensionTypeVector.java b/java/vector/src/main/java/org/apache/arrow/vector/ExtensionTypeVector.java
index b54ce117ba5..e06a77b541f 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/ExtensionTypeVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/ExtensionTypeVector.java
@@ -19,6 +19,7 @@
import java.util.Iterator;
import java.util.List;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -131,7 +132,7 @@ public TransferPair makeTransferPair(ValueVector target) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
+ protected Supplier getReaderImpl() {
throw new UnsupportedOperationException("Readers for extension types depend on the underlying vector, " +
"asking for a concrete implementation class of the reader type is invalid.");
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java b/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
index b1a0d916459..d87ccef6871 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.util.Preconditions;
@@ -77,8 +79,8 @@ public FixedSizeBinaryVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return FixedSizeBinaryReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new FixedSizeBinaryReaderImpl(FixedSizeBinaryVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
index fc1883dd825..36e5ed27418 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.Float4ReaderImpl;
@@ -73,8 +75,8 @@ public Float4Vector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return Float4ReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new Float4ReaderImpl(Float4Vector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
index b8750558d43..593297da2eb 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.Float8ReaderImpl;
@@ -73,8 +75,8 @@ public Float8Vector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return Float8ReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new Float8ReaderImpl(Float8Vector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
index 2e375403da1..79b4a065a02 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.IntReaderImpl;
@@ -73,8 +75,8 @@ public IntVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return IntReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new IntReaderImpl(IntVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
index 89cca38e518..4730ae317d2 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
@@ -42,7 +42,6 @@
public final class IntervalDayVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 8;
private static final byte MILLISECOND_OFFSET = 4;
- private Supplier reader;
/**
* Instantiate a IntervalDayVector. This doesn't allocate any memory for
@@ -76,19 +75,11 @@ public IntervalDayVector(String name, FieldType fieldType, BufferAllocator alloc
*/
public IntervalDayVector(Field field, BufferAllocator allocator) {
super(field, allocator, TYPE_WIDTH);
- reader = () -> {
- final FieldReader fieldReader;
- synchronized (this) {
- fieldReader = new IntervalDayReaderImpl(IntervalDayVector.this);
- reader = () -> fieldReader;
- }
- return fieldReader;
- };
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return IntervalDayReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new IntervalDayReaderImpl(IntervalDayVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java
index b2f2c78ed40..ab17011012a 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java
@@ -47,7 +47,6 @@ public final class IntervalMonthDayNanoVector extends BaseFixedWidthVector {
public static final byte TYPE_WIDTH = 16;
private static final byte DAY_OFFSET = 4;
private static final byte NANOSECOND_OFFSET = 8;
- private Supplier reader;
/**
@@ -85,8 +84,8 @@ public IntervalMonthDayNanoVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return IntervalMonthDayNanoReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new IntervalMonthDayNanoReaderImpl(IntervalMonthDayNanoVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
index 571590be71f..a407f59b92e 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
@@ -20,6 +20,7 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.Period;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -75,8 +76,8 @@ public IntervalYearVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return IntervalYearReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new IntervalYearReaderImpl(IntervalYearVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/LargeVarBinaryVector.java b/java/vector/src/main/java/org/apache/arrow/vector/LargeVarBinaryVector.java
index fdc49dae0f3..32a90f1d435 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/LargeVarBinaryVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/LargeVarBinaryVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.LargeVarBinaryReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -70,8 +72,8 @@ public LargeVarBinaryVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return LargeVarBinaryReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new LargeVarBinaryReaderImpl(LargeVarBinaryVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/LargeVarCharVector.java b/java/vector/src/main/java/org/apache/arrow/vector/LargeVarCharVector.java
index a4b7a3cf649..44c4bdf6d2e 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/LargeVarCharVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/LargeVarCharVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.LargeVarCharReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -71,8 +73,8 @@ public LargeVarCharVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return LargeVarCharReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new LargeVarCharReaderImpl(LargeVarCharVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
index 438c1b03eb6..f629952fcf1 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.SmallIntReaderImpl;
@@ -73,8 +75,8 @@ public SmallIntVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return SmallIntReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new SmallIntReaderImpl(SmallIntVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
index 55510911513..336c22336fb 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeMicroReaderImpl;
@@ -74,8 +76,8 @@ public TimeMicroVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return TimeMicroReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new TimeMicroReaderImpl(TimeMicroVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
index 25cd644a84c..59680529641 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
@@ -20,6 +20,7 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -76,8 +77,8 @@ public TimeMilliVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return TimeMilliReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new TimeMilliReaderImpl(TimeMilliVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
index 7466fa72255..7f510828d45 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeNanoReaderImpl;
@@ -73,8 +75,8 @@ public TimeNanoVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return TimeNanoReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new TimeNanoReaderImpl(TimeNanoVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
index 910824b8eb5..e1946ec0a7f 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeSecReaderImpl;
@@ -73,8 +75,8 @@ public TimeSecVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return TimeSecReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new TimeSecReaderImpl(TimeSecVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java
index 64ed0a1a45b..f1357a3a171 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java
@@ -39,7 +39,6 @@
* (bit vector) is maintained to track which elements in the vector are null.
*/
public final class TimeStampMicroTZVector extends TimeStampVector {
- private Supplier reader;
private final String timeZone;
/**
@@ -81,8 +80,8 @@ public TimeStampMicroTZVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return TimeStampMicroTZReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new TimeStampMicroTZReaderImpl(TimeStampMicroTZVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java
index 9f72a59e956..eec2dfbc4ac 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java
@@ -20,6 +20,7 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
+import java.util.function.Supplier;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampMicroReaderImpl;
@@ -74,8 +75,8 @@ public TimeStampMicroVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return TimeStampMicroReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new TimeStampMicroReaderImpl(TimeStampMicroVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java
index da8dbd56645..abcb46ee4cd 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampMilliTZReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -78,8 +80,8 @@ public TimeStampMilliTZVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return TimeStampMilliTZReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new TimeStampMilliTZReaderImpl(TimeStampMilliTZVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java
index 8662b67f405..a27fd573791 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java
@@ -20,6 +20,7 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
+import java.util.function.Supplier;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampMilliReaderImpl;
@@ -74,8 +75,8 @@ public TimeStampMilliVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return TimeStampMilliReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new TimeStampMilliReaderImpl(TimeStampMilliVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java
index e8e3da9da02..954e04bc5b6 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampNanoTZReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -78,8 +80,8 @@ public TimeStampNanoTZVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return TimeStampNanoTZReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new TimeStampNanoTZReaderImpl(TimeStampNanoTZVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java
index 7da1c0920d0..00c0203332e 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java
@@ -20,6 +20,7 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
+import java.util.function.Supplier;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampNanoReaderImpl;
@@ -74,8 +75,8 @@ public TimeStampNanoVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return TimeStampNanoReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new TimeStampNanoReaderImpl(TimeStampNanoVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java
index 7c549a83698..7e9da06e387 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampSecTZReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -78,8 +80,8 @@ public TimeStampSecTZVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return TimeStampSecTZReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new TimeStampSecTZReaderImpl(TimeStampSecTZVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java
index 7503c80d924..651fbcff71c 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java
@@ -20,6 +20,7 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
+import java.util.function.Supplier;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampSecReaderImpl;
@@ -74,8 +75,8 @@ public TimeStampSecVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return TimeStampSecReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new TimeStampSecReaderImpl(TimeStampSecVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
index f140bf036fa..d6e4db6b8f7 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TinyIntReaderImpl;
@@ -73,8 +75,8 @@ public TinyIntVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return TinyIntReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new TinyIntReaderImpl(TinyIntVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
index b803ba7c35b..e1f0dfe88b8 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt1ReaderImpl;
@@ -67,8 +69,8 @@ public UInt1Vector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return UInt1ReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new UInt1ReaderImpl(UInt1Vector.this);
}
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
index 510f1170265..32c3317cd75 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt2ReaderImpl;
@@ -63,8 +65,8 @@ public UInt2Vector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return UInt2ReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new UInt2ReaderImpl(UInt2Vector.this);
}
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
index ab067079d93..0658f35a82d 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt4ReaderImpl;
@@ -68,8 +70,8 @@ public UInt4Vector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return UInt4ReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new UInt4ReaderImpl(UInt4Vector.this);
}
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
index 7c8ff6ee491..cc66032e60f 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
@@ -20,6 +20,7 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.math.BigInteger;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -65,8 +66,8 @@ public UInt8Vector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return UInt8ReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new UInt8ReaderImpl(UInt8Vector.this);
}
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java b/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java
index 8728a37aa79..cf38036a618 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.VarBinaryReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -71,8 +73,8 @@ public VarBinaryVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return VarBinaryReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new VarBinaryReaderImpl(VarBinaryVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java b/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java
index 505ab9a7e43..72afa8c14a3 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java
@@ -19,6 +19,8 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import java.util.function.Supplier;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.VarCharReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -70,8 +72,8 @@ public VarCharVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return VarCharReaderImpl.class;
+ protected Supplier getReaderImpl() {
+ return () -> new VarCharReaderImpl(VarCharVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/complex/FixedSizeListVector.java b/java/vector/src/main/java/org/apache/arrow/vector/complex/FixedSizeListVector.java
index ed900a97b45..f6716ef44ef 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/complex/FixedSizeListVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/complex/FixedSizeListVector.java
@@ -29,6 +29,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -183,8 +184,8 @@ public List getFieldInnerVectors() {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return UnionFixedSizeListReader.class;
+ protected Supplier getReaderImpl() {
+ return () -> new UnionFixedSizeListReader(this);
}
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/complex/LargeListVector.java b/java/vector/src/main/java/org/apache/arrow/vector/complex/LargeListVector.java
index 6ab356109aa..af4af2d2d04 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/complex/LargeListVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/complex/LargeListVector.java
@@ -27,6 +27,7 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -696,8 +697,8 @@ public void copyValueSafe(int from, int to) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return UnionLargeListReader.class;
+ protected Supplier getReaderImpl() {
+ return () -> new UnionLargeListReader(this);
}
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/complex/ListVector.java b/java/vector/src/main/java/org/apache/arrow/vector/complex/ListVector.java
index 2c9f5789c4b..386fc12df88 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/complex/ListVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/complex/ListVector.java
@@ -27,6 +27,7 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -567,8 +568,8 @@ public void copyValueSafe(int from, int to) {
}
@Override
- protected Class extends FieldReader> getReaderImplClass() {
- return UnionListReader.class;
+ protected Supplier getReaderImpl() {
+ return () -> new UnionListReader(this);
}
@Override
From 24deeeb52a150f5bd462c3aa9e06664b71ec1116 Mon Sep 17 00:00:00 2001
From: Ramasai
Date: Thu, 15 Jun 2023 22:34:56 -0400
Subject: [PATCH 7/9] GH-15187: Fix comments
---
.../main/java/org/apache/arrow/vector/BaseValueVector.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
index e9c06efe8d4..6896a663b5b 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
@@ -149,9 +149,9 @@ long computeCombinedBufferSize(int valueCount, int typeWidth) {
/**
* Each vector has a different reader that implements the FieldReader interface. Overridden methods must make
- * sure to return the correct type of the reader implementation to instantiate the reader properly.
+ * sure to return the correct concrete reader implementation.
*
- * @return Returns the implementation class type of the vector's reader.
+ * @return Returns a lambda that initializes a reader when called.
*/
protected abstract Supplier getReaderImpl();
@@ -159,7 +159,7 @@ long computeCombinedBufferSize(int valueCount, int typeWidth) {
* Default implementation to create a reader for the vector. Depends on the individual vector
* class' implementation of {@link #getReaderImpl} to initialize the reader appropriately.
*
- * @return Concrete instance of FieldReader by using lazy initialization.
+ * @return Concrete instance of FieldReader by using double-checked locking.
*/
public FieldReader getReader() {
FieldReader reader = fieldReader;
From 94fe92d14ba92409e1f8ac286fb9c237c43741f8 Mon Sep 17 00:00:00 2001
From: Ramasai
Date: Sat, 17 Jun 2023 15:17:28 -0400
Subject: [PATCH 8/9] GH-15187: Move supplier and just return new instance of
FieldReader type when asked for impl
---
.../java/org/apache/arrow/vector/BaseValueVector.java | 4 ++--
.../main/java/org/apache/arrow/vector/BigIntVector.java | 6 ++----
.../src/main/java/org/apache/arrow/vector/BitVector.java | 6 ++----
.../main/java/org/apache/arrow/vector/DateDayVector.java | 6 ++----
.../java/org/apache/arrow/vector/DateMilliVector.java | 5 ++---
.../java/org/apache/arrow/vector/Decimal256Vector.java | 5 ++---
.../main/java/org/apache/arrow/vector/DecimalVector.java | 5 ++---
.../java/org/apache/arrow/vector/DurationVector.java | 5 ++---
.../org/apache/arrow/vector/ExtensionTypeVector.java | 9 +--------
.../org/apache/arrow/vector/FixedSizeBinaryVector.java | 6 ++----
.../main/java/org/apache/arrow/vector/Float4Vector.java | 6 ++----
.../main/java/org/apache/arrow/vector/Float8Vector.java | 6 ++----
.../src/main/java/org/apache/arrow/vector/IntVector.java | 6 ++----
.../java/org/apache/arrow/vector/IntervalDayVector.java | 5 ++---
.../apache/arrow/vector/IntervalMonthDayNanoVector.java | 5 ++---
.../java/org/apache/arrow/vector/IntervalYearVector.java | 5 ++---
.../org/apache/arrow/vector/LargeVarBinaryVector.java | 6 ++----
.../java/org/apache/arrow/vector/LargeVarCharVector.java | 6 ++----
.../java/org/apache/arrow/vector/SmallIntVector.java | 6 ++----
.../java/org/apache/arrow/vector/TimeMicroVector.java | 6 ++----
.../java/org/apache/arrow/vector/TimeMilliVector.java | 5 ++---
.../java/org/apache/arrow/vector/TimeNanoVector.java | 6 ++----
.../main/java/org/apache/arrow/vector/TimeSecVector.java | 6 ++----
.../org/apache/arrow/vector/TimeStampMicroTZVector.java | 6 ++----
.../org/apache/arrow/vector/TimeStampMicroVector.java | 5 ++---
.../org/apache/arrow/vector/TimeStampMilliTZVector.java | 6 ++----
.../org/apache/arrow/vector/TimeStampMilliVector.java | 5 ++---
.../org/apache/arrow/vector/TimeStampNanoTZVector.java | 6 ++----
.../org/apache/arrow/vector/TimeStampNanoVector.java | 5 ++---
.../org/apache/arrow/vector/TimeStampSecTZVector.java | 6 ++----
.../java/org/apache/arrow/vector/TimeStampSecVector.java | 5 ++---
.../main/java/org/apache/arrow/vector/TinyIntVector.java | 4 ++--
.../main/java/org/apache/arrow/vector/UInt1Vector.java | 6 ++----
.../main/java/org/apache/arrow/vector/UInt2Vector.java | 6 ++----
.../main/java/org/apache/arrow/vector/UInt4Vector.java | 6 ++----
.../main/java/org/apache/arrow/vector/UInt8Vector.java | 5 ++---
.../java/org/apache/arrow/vector/VarBinaryVector.java | 6 ++----
.../main/java/org/apache/arrow/vector/VarCharVector.java | 6 ++----
.../apache/arrow/vector/complex/FixedSizeListVector.java | 5 ++---
.../org/apache/arrow/vector/complex/LargeListVector.java | 5 ++---
.../java/org/apache/arrow/vector/complex/ListVector.java | 5 ++---
41 files changed, 81 insertions(+), 148 deletions(-)
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
index 6896a663b5b..44830c67304 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
@@ -153,7 +153,7 @@ long computeCombinedBufferSize(int valueCount, int typeWidth) {
*
* @return Returns a lambda that initializes a reader when called.
*/
- protected abstract Supplier getReaderImpl();
+ protected abstract FieldReader getReaderImpl();
/**
* Default implementation to create a reader for the vector. Depends on the individual vector
@@ -169,7 +169,7 @@ public FieldReader getReader() {
}
synchronized (this) {
if (fieldReader == null) {
- fieldReader = getReaderImpl().get();
+ fieldReader = getReaderImpl();
}
return fieldReader;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
index a487d2ac287..b0052e7e330 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.BigIntReaderImpl;
@@ -75,8 +73,8 @@ public BigIntVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new BigIntReaderImpl(BigIntVector.this);
+ protected FieldReader getReaderImpl() {
+ return new BigIntReaderImpl(BigIntVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
index e2de9455501..104819147b1 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
@@ -20,8 +20,6 @@
import static org.apache.arrow.memory.util.LargeMemoryUtil.capAtMaxInt;
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.memory.util.ArrowBufPointer;
@@ -83,8 +81,8 @@ public BitVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new BitReaderImpl(BitVector.this);
+ protected FieldReader getReaderImpl() {
+ return new BitReaderImpl(BitVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
index eb01d67d871..c99c5786058 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.DateDayReaderImpl;
@@ -76,8 +74,8 @@ public DateDayVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new DateDayReaderImpl(DateDayVector.this);
+ protected FieldReader getReaderImpl() {
+ return new DateDayReaderImpl(DateDayVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
index 1b61d5789f1..6ab8ac4eed2 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
@@ -20,7 +20,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -77,8 +76,8 @@ public DateMilliVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new DateMilliReaderImpl(DateMilliVector.this);
+ protected FieldReader getReaderImpl() {
+ return new DateMilliReaderImpl(DateMilliVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java
index 0791ba8b816..4ccee50d680 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java
@@ -21,7 +21,6 @@
import java.math.BigDecimal;
import java.nio.ByteOrder;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -90,8 +89,8 @@ public Decimal256Vector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new Decimal256ReaderImpl(Decimal256Vector.this);
+ protected FieldReader getReaderImpl() {
+ return new Decimal256ReaderImpl(Decimal256Vector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
index 09bf4b9a44d..db04563df24 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
@@ -21,7 +21,6 @@
import java.math.BigDecimal;
import java.nio.ByteOrder;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -89,8 +88,8 @@ public DecimalVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new DecimalReaderImpl(DecimalVector.this);
+ protected FieldReader getReaderImpl() {
+ return new DecimalReaderImpl(DecimalVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java
index 65c18f0f91a..1e1db0d1c3c 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DurationVector.java
@@ -21,7 +21,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.Duration;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -72,8 +71,8 @@ public DurationVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new DurationReaderImpl(DurationVector.this);
+ protected FieldReader getReaderImpl() {
+ return new DurationReaderImpl(DurationVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/ExtensionTypeVector.java b/java/vector/src/main/java/org/apache/arrow/vector/ExtensionTypeVector.java
index e06a77b541f..9433719c5b8 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/ExtensionTypeVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/ExtensionTypeVector.java
@@ -19,7 +19,6 @@
import java.util.Iterator;
import java.util.List;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -132,13 +131,7 @@ public TransferPair makeTransferPair(ValueVector target) {
}
@Override
- protected Supplier getReaderImpl() {
- throw new UnsupportedOperationException("Readers for extension types depend on the underlying vector, " +
- "asking for a concrete implementation class of the reader type is invalid.");
- }
-
- @Override
- public FieldReader getReader() {
+ protected FieldReader getReaderImpl() {
return underlyingVector.getReader();
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java b/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
index d87ccef6871..3ce2bb77ccc 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.util.Preconditions;
@@ -79,8 +77,8 @@ public FixedSizeBinaryVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new FixedSizeBinaryReaderImpl(FixedSizeBinaryVector.this);
+ protected FieldReader getReaderImpl() {
+ return new FixedSizeBinaryReaderImpl(FixedSizeBinaryVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
index 36e5ed27418..4b56a22f2d0 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.Float4ReaderImpl;
@@ -75,8 +73,8 @@ public Float4Vector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new Float4ReaderImpl(Float4Vector.this);
+ protected FieldReader getReaderImpl() {
+ return new Float4ReaderImpl(Float4Vector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
index 593297da2eb..7e4fae7087b 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.Float8ReaderImpl;
@@ -75,8 +73,8 @@ public Float8Vector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new Float8ReaderImpl(Float8Vector.this);
+ protected FieldReader getReaderImpl() {
+ return new Float8ReaderImpl(Float8Vector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
index 79b4a065a02..5c8ef440e8e 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.IntReaderImpl;
@@ -75,8 +73,8 @@ public IntVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new IntReaderImpl(IntVector.this);
+ protected FieldReader getReaderImpl() {
+ return new IntReaderImpl(IntVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
index 4730ae317d2..35312ba7c96 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
@@ -20,7 +20,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.Duration;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -78,8 +77,8 @@ public IntervalDayVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new IntervalDayReaderImpl(IntervalDayVector.this);
+ protected FieldReader getReaderImpl() {
+ return new IntervalDayReaderImpl(IntervalDayVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java
index ab17011012a..73bbc0a2c19 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntervalMonthDayNanoVector.java
@@ -21,7 +21,6 @@
import java.time.Duration;
import java.time.Period;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -84,8 +83,8 @@ public IntervalMonthDayNanoVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new IntervalMonthDayNanoReaderImpl(IntervalMonthDayNanoVector.this);
+ protected FieldReader getReaderImpl() {
+ return new IntervalMonthDayNanoReaderImpl(IntervalMonthDayNanoVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
index a407f59b92e..7fe572f3ff1 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
@@ -20,7 +20,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.Period;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -76,8 +75,8 @@ public IntervalYearVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new IntervalYearReaderImpl(IntervalYearVector.this);
+ protected FieldReader getReaderImpl() {
+ return new IntervalYearReaderImpl(IntervalYearVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/LargeVarBinaryVector.java b/java/vector/src/main/java/org/apache/arrow/vector/LargeVarBinaryVector.java
index 32a90f1d435..0063a61da57 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/LargeVarBinaryVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/LargeVarBinaryVector.java
@@ -17,8 +17,6 @@
package org.apache.arrow.vector;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.LargeVarBinaryReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -72,8 +70,8 @@ public LargeVarBinaryVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new LargeVarBinaryReaderImpl(LargeVarBinaryVector.this);
+ protected FieldReader getReaderImpl() {
+ return new LargeVarBinaryReaderImpl(LargeVarBinaryVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/LargeVarCharVector.java b/java/vector/src/main/java/org/apache/arrow/vector/LargeVarCharVector.java
index 44c4bdf6d2e..1f8d9b7d3a8 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/LargeVarCharVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/LargeVarCharVector.java
@@ -17,8 +17,6 @@
package org.apache.arrow.vector;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.LargeVarCharReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -73,8 +71,8 @@ public LargeVarCharVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new LargeVarCharReaderImpl(LargeVarCharVector.this);
+ protected FieldReader getReaderImpl() {
+ return new LargeVarCharReaderImpl(LargeVarCharVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
index f629952fcf1..518ee707396 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.SmallIntReaderImpl;
@@ -75,8 +73,8 @@ public SmallIntVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new SmallIntReaderImpl(SmallIntVector.this);
+ protected FieldReader getReaderImpl() {
+ return new SmallIntReaderImpl(SmallIntVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
index 336c22336fb..86738cd221e 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeMicroReaderImpl;
@@ -76,8 +74,8 @@ public TimeMicroVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new TimeMicroReaderImpl(TimeMicroVector.this);
+ protected FieldReader getReaderImpl() {
+ return new TimeMicroReaderImpl(TimeMicroVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
index 59680529641..480add91097 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
@@ -20,7 +20,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -77,8 +76,8 @@ public TimeMilliVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new TimeMilliReaderImpl(TimeMilliVector.this);
+ protected FieldReader getReaderImpl() {
+ return new TimeMilliReaderImpl(TimeMilliVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
index 7f510828d45..82609cdc446 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeNanoReaderImpl;
@@ -75,8 +73,8 @@ public TimeNanoVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new TimeNanoReaderImpl(TimeNanoVector.this);
+ protected FieldReader getReaderImpl() {
+ return new TimeNanoReaderImpl(TimeNanoVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
index e1946ec0a7f..9b7614e55b6 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeSecReaderImpl;
@@ -75,8 +73,8 @@ public TimeSecVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new TimeSecReaderImpl(TimeSecVector.this);
+ protected FieldReader getReaderImpl() {
+ return new TimeSecReaderImpl(TimeSecVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java
index f1357a3a171..a37b444d1a3 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroTZVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampMicroTZReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -80,8 +78,8 @@ public TimeStampMicroTZVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new TimeStampMicroTZReaderImpl(TimeStampMicroTZVector.this);
+ protected FieldReader getReaderImpl() {
+ return new TimeStampMicroTZReaderImpl(TimeStampMicroTZVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java
index eec2dfbc4ac..88ce27a187e 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMicroVector.java
@@ -20,7 +20,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
-import java.util.function.Supplier;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampMicroReaderImpl;
@@ -75,8 +74,8 @@ public TimeStampMicroVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new TimeStampMicroReaderImpl(TimeStampMicroVector.this);
+ protected FieldReader getReaderImpl() {
+ return new TimeStampMicroReaderImpl(TimeStampMicroVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java
index abcb46ee4cd..775594ceea6 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliTZVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampMilliTZReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -80,8 +78,8 @@ public TimeStampMilliTZVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new TimeStampMilliTZReaderImpl(TimeStampMilliTZVector.this);
+ protected FieldReader getReaderImpl() {
+ return new TimeStampMilliTZReaderImpl(TimeStampMilliTZVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java
index a27fd573791..a42773269f8 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampMilliVector.java
@@ -20,7 +20,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
-import java.util.function.Supplier;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampMilliReaderImpl;
@@ -75,8 +74,8 @@ public TimeStampMilliVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new TimeStampMilliReaderImpl(TimeStampMilliVector.this);
+ protected FieldReader getReaderImpl() {
+ return new TimeStampMilliReaderImpl(TimeStampMilliVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java
index 954e04bc5b6..af43cf6fc9b 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoTZVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampNanoTZReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -80,8 +78,8 @@ public TimeStampNanoTZVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new TimeStampNanoTZReaderImpl(TimeStampNanoTZVector.this);
+ protected FieldReader getReaderImpl() {
+ return new TimeStampNanoTZReaderImpl(TimeStampNanoTZVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java
index 00c0203332e..7b02b1c87d3 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampNanoVector.java
@@ -20,7 +20,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
-import java.util.function.Supplier;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampNanoReaderImpl;
@@ -75,8 +74,8 @@ public TimeStampNanoVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new TimeStampNanoReaderImpl(TimeStampNanoVector.this);
+ protected FieldReader getReaderImpl() {
+ return new TimeStampNanoReaderImpl(TimeStampNanoVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java
index 7e9da06e387..5837e9d8515 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecTZVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampSecTZReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -80,8 +78,8 @@ public TimeStampSecTZVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new TimeStampSecTZReaderImpl(TimeStampSecTZVector.this);
+ protected FieldReader getReaderImpl() {
+ return new TimeStampSecTZReaderImpl(TimeStampSecTZVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java
index 651fbcff71c..1e249140335 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampSecVector.java
@@ -20,7 +20,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
-import java.util.function.Supplier;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeStampSecReaderImpl;
@@ -75,8 +74,8 @@ public TimeStampSecVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new TimeStampSecReaderImpl(TimeStampSecVector.this);
+ protected FieldReader getReaderImpl() {
+ return new TimeStampSecReaderImpl(TimeStampSecVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
index d6e4db6b8f7..ae4a32e7694 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
@@ -75,8 +75,8 @@ public TinyIntVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new TinyIntReaderImpl(TinyIntVector.this);
+ protected FieldReader getReaderImpl() {
+ return new TinyIntReaderImpl(TinyIntVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
index e1f0dfe88b8..777df3fb1ef 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt1ReaderImpl;
@@ -69,8 +67,8 @@ public UInt1Vector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new UInt1ReaderImpl(UInt1Vector.this);
+ protected FieldReader getReaderImpl() {
+ return new UInt1ReaderImpl(UInt1Vector.this);
}
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
index 32c3317cd75..e5b95be191d 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt2ReaderImpl;
@@ -65,8 +63,8 @@ public UInt2Vector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new UInt2ReaderImpl(UInt2Vector.this);
+ protected FieldReader getReaderImpl() {
+ return new UInt2ReaderImpl(UInt2Vector.this);
}
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
index 0658f35a82d..bda98b12005 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt4ReaderImpl;
@@ -70,8 +68,8 @@ public UInt4Vector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new UInt4ReaderImpl(UInt4Vector.this);
+ protected FieldReader getReaderImpl() {
+ return new UInt4ReaderImpl(UInt4Vector.this);
}
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
index cc66032e60f..5e7c18902f0 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
@@ -20,7 +20,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.math.BigInteger;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -66,8 +65,8 @@ public UInt8Vector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new UInt8ReaderImpl(UInt8Vector.this);
+ protected FieldReader getReaderImpl() {
+ return new UInt8ReaderImpl(UInt8Vector.this);
}
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java b/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java
index cf38036a618..34e072aaa83 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.VarBinaryReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -73,8 +71,8 @@ public VarBinaryVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new VarBinaryReaderImpl(VarBinaryVector.this);
+ protected FieldReader getReaderImpl() {
+ return new VarBinaryReaderImpl(VarBinaryVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java b/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java
index 72afa8c14a3..bc5c68b29f3 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.VarCharReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -72,8 +70,8 @@ public VarCharVector(Field field, BufferAllocator allocator) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new VarCharReaderImpl(VarCharVector.this);
+ protected FieldReader getReaderImpl() {
+ return new VarCharReaderImpl(VarCharVector.this);
}
/**
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/complex/FixedSizeListVector.java b/java/vector/src/main/java/org/apache/arrow/vector/complex/FixedSizeListVector.java
index f6716ef44ef..0f788291811 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/complex/FixedSizeListVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/complex/FixedSizeListVector.java
@@ -29,7 +29,6 @@
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -184,8 +183,8 @@ public List getFieldInnerVectors() {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new UnionFixedSizeListReader(this);
+ protected FieldReader getReaderImpl() {
+ return new UnionFixedSizeListReader(this);
}
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/complex/LargeListVector.java b/java/vector/src/main/java/org/apache/arrow/vector/complex/LargeListVector.java
index af4af2d2d04..6ef5f994fc6 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/complex/LargeListVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/complex/LargeListVector.java
@@ -27,7 +27,6 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -697,8 +696,8 @@ public void copyValueSafe(int from, int to) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new UnionLargeListReader(this);
+ protected FieldReader getReaderImpl() {
+ return new UnionLargeListReader(this);
}
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/complex/ListVector.java b/java/vector/src/main/java/org/apache/arrow/vector/complex/ListVector.java
index 386fc12df88..52e5307e139 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/complex/ListVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/complex/ListVector.java
@@ -27,7 +27,6 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
@@ -568,8 +567,8 @@ public void copyValueSafe(int from, int to) {
}
@Override
- protected Supplier getReaderImpl() {
- return () -> new UnionListReader(this);
+ protected FieldReader getReaderImpl() {
+ return new UnionListReader(this);
}
@Override
From b4a0c9dc8250b3efb27a94fc1163e2a4c4f2ed0f Mon Sep 17 00:00:00 2001
From: Ramasai
Date: Sat, 17 Jun 2023 15:21:09 -0400
Subject: [PATCH 9/9] GH-15187: remove unneeded Supplier imports
---
.../src/main/java/org/apache/arrow/vector/BaseValueVector.java | 1 -
.../src/main/java/org/apache/arrow/vector/TinyIntVector.java | 2 --
2 files changed, 3 deletions(-)
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
index 44830c67304..679e5d06c01 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
@@ -19,7 +19,6 @@
import java.util.Collections;
import java.util.Iterator;
-import java.util.function.Supplier;
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
index ae4a32e7694..4c4eee1342f 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
@@ -19,8 +19,6 @@
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
-import java.util.function.Supplier;
-
import org.apache.arrow.memory.ArrowBuf;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TinyIntReaderImpl;