You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ra...@apache.org on 2019/07/03 01:38:27 UTC
[arrow] branch master updated: ARROW-5483: [Java] add ValueVector
constructors that take Field object
This is an automated email from the ASF dual-hosted git repository.
ravindra pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new 913d82d ARROW-5483: [Java] add ValueVector constructors that take Field object
913d82d is described below
commit 913d82d1c21d35d438fc01081dcace901f4def02
Author: Pindikura Ravindra <ra...@dremio.com>
AuthorDate: Wed Jul 3 07:08:06 2019 +0530
ARROW-5483: [Java] add ValueVector constructors that take Field object
Author: Pindikura Ravindra <ra...@dremio.com>
Closes #4614 from pravindra/vecopt and squashes the following commits:
581399266 <Pindikura Ravindra> ARROW-5483: add ValueVector constructors that take Field object
---
.../src/main/codegen/templates/UnionVector.java | 9 +-
.../apache/arrow/vector/BaseFixedWidthVector.java | 18 +-
.../org/apache/arrow/vector/BaseValueVector.java | 10 +-
.../arrow/vector/BaseVariableWidthVector.java | 18 +-
.../java/org/apache/arrow/vector/BigIntVector.java | 14 +-
.../java/org/apache/arrow/vector/BitVector.java | 14 +-
.../org/apache/arrow/vector/DateDayVector.java | 14 +-
.../org/apache/arrow/vector/DateMilliVector.java | 14 +-
.../org/apache/arrow/vector/DecimalVector.java | 16 +-
.../org/apache/arrow/vector/DurationVector.java | 17 +-
.../apache/arrow/vector/ExtensionTypeVector.java | 25 ++-
.../apache/arrow/vector/FixedSizeBinaryVector.java | 16 +-
.../java/org/apache/arrow/vector/Float4Vector.java | 14 +-
.../java/org/apache/arrow/vector/Float8Vector.java | 14 +-
.../java/org/apache/arrow/vector/IntVector.java | 14 +-
.../org/apache/arrow/vector/IntervalDayVector.java | 14 +-
.../apache/arrow/vector/IntervalYearVector.java | 14 +-
.../org/apache/arrow/vector/SmallIntVector.java | 14 +-
.../org/apache/arrow/vector/TimeMicroVector.java | 14 +-
.../org/apache/arrow/vector/TimeMilliVector.java | 14 +-
.../org/apache/arrow/vector/TimeNanoVector.java | 14 +-
.../org/apache/arrow/vector/TimeSecVector.java | 14 +-
.../arrow/vector/TimeStampMicroTZVector.java | 15 ++
.../apache/arrow/vector/TimeStampMicroVector.java | 13 ++
.../arrow/vector/TimeStampMilliTZVector.java | 15 ++
.../apache/arrow/vector/TimeStampMilliVector.java | 13 ++
.../apache/arrow/vector/TimeStampNanoTZVector.java | 15 ++
.../apache/arrow/vector/TimeStampNanoVector.java | 13 ++
.../apache/arrow/vector/TimeStampSecTZVector.java | 15 ++
.../apache/arrow/vector/TimeStampSecVector.java | 13 ++
.../org/apache/arrow/vector/TimeStampVector.java | 14 +-
.../org/apache/arrow/vector/TinyIntVector.java | 14 +-
.../java/org/apache/arrow/vector/UInt1Vector.java | 7 +-
.../java/org/apache/arrow/vector/UInt2Vector.java | 7 +-
.../java/org/apache/arrow/vector/UInt4Vector.java | 7 +-
.../java/org/apache/arrow/vector/UInt8Vector.java | 7 +-
.../org/apache/arrow/vector/VarBinaryVector.java | 14 +-
.../org/apache/arrow/vector/VarCharVector.java | 14 +-
.../vector/complex/BaseRepeatedValueVector.java | 9 +-
.../arrow/vector/complex/FixedSizeListVector.java | 9 +-
.../apache/arrow/vector/complex/ListVector.java | 2 +-
.../java/org/apache/arrow/vector/types/Types.java | 213 +++++++++------------
.../org/apache/arrow/vector/types/pojo/Field.java | 2 +-
.../apache/arrow/vector/types/pojo/FieldType.java | 5 +
.../org/apache/arrow/vector/TestVectorAlloc.java | 106 ++++++++++
45 files changed, 689 insertions(+), 178 deletions(-)
diff --git a/java/vector/src/main/codegen/templates/UnionVector.java b/java/vector/src/main/codegen/templates/UnionVector.java
index 26f4673..04eed72 100644
--- a/java/vector/src/main/codegen/templates/UnionVector.java
+++ b/java/vector/src/main/codegen/templates/UnionVector.java
@@ -17,6 +17,7 @@
import io.netty.buffer.ArrowBuf;
import org.apache.arrow.memory.ReferenceManager;
+import org.apache.arrow.vector.types.pojo.FieldType;
<@pp.dropOutputFile />
<@pp.changeOutputFile name="/org/apache/arrow/vector/complex/UnionVector.java" />
@@ -74,14 +75,18 @@ public class UnionVector implements FieldVector {
private int singleType = 0;
private ValueVector singleVector;
- private static final byte TYPE_WIDTH = 1;
private final CallBack callBack;
private int typeBufferAllocationSizeInBytes;
+ private static final byte TYPE_WIDTH = 1;
+ private static final FieldType INTERNAL_STRUCT_TYPE = new FieldType(false /*nullable*/,
+ ArrowType.Struct.INSTANCE, null /*dictionary*/, null /*metadata*/);
+
public UnionVector(String name, BufferAllocator allocator, CallBack callBack) {
this.name = name;
this.allocator = allocator;
- this.internalStruct = new NonNullableStructVector("internal", allocator, new FieldType(false, ArrowType.Struct.INSTANCE, null, null), callBack);
+ this.internalStruct = new NonNullableStructVector("internal", allocator, INTERNAL_STRUCT_TYPE,
+ callBack);
this.typeBuffer = allocator.getEmpty();
this.callBack = callBack;
this.typeBufferAllocationSizeInBytes = BaseValueVector.INITIAL_VALUE_ALLOCATION * TYPE_WIDTH;
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 91937ca..e4bed23 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
@@ -25,7 +25,6 @@ import java.util.List;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.ipc.message.ArrowFieldNode;
import org.apache.arrow.vector.types.pojo.Field;
-import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.CallBack;
import org.apache.arrow.vector.util.OversizedAllocationException;
import org.apache.arrow.vector.util.TransferPair;
@@ -52,16 +51,14 @@ public abstract class BaseFixedWidthVector extends BaseValueVector
/**
* Constructs a new instance.
*
- * @param name The name of the vector.
+ * @param field field materialized by this vector
* @param allocator The allocator to use for allocating memory for the vector.
- * @param fieldType The type of the buffer.
* @param typeWidth The width in bytes of the type.
*/
- public BaseFixedWidthVector(final String name, final BufferAllocator allocator,
- FieldType fieldType, final int typeWidth) {
- super(name, allocator);
+ public BaseFixedWidthVector(Field field, final BufferAllocator allocator, final int typeWidth) {
+ super(allocator);
this.typeWidth = typeWidth;
- field = new Field(name, fieldType, null);
+ this.field = field;
valueCount = 0;
allocationMonitor = 0;
validityBuffer = allocator.getEmpty();
@@ -70,6 +67,11 @@ public abstract class BaseFixedWidthVector extends BaseValueVector
}
+ @Override
+ public String getName() {
+ return field.getName();
+ }
+
/* TODO:
* see if getNullCount() can be made faster -- O(1)
*/
@@ -533,7 +535,7 @@ public abstract class BaseFixedWidthVector extends BaseValueVector
*/
@Override
public TransferPair getTransferPair(BufferAllocator allocator) {
- return getTransferPair(name, allocator);
+ return getTransferPair(getName(), allocator);
}
/**
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 bc12e8e..fc8e2e7 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
@@ -50,16 +50,16 @@ public abstract class BaseValueVector implements ValueVector {
public static final int INITIAL_VALUE_ALLOCATION = 3970;
protected final BufferAllocator allocator;
- protected final String name;
- protected BaseValueVector(String name, BufferAllocator allocator) {
+ protected BaseValueVector(BufferAllocator allocator) {
this.allocator = Preconditions.checkNotNull(allocator, "allocator cannot be null");
- this.name = name;
}
+ public abstract String getName();
+
@Override
public String toString() {
- return super.toString() + "[name = " + name + ", ...]";
+ return super.toString() + "[name = " + getName() + ", ...]";
}
@Override
@@ -73,7 +73,7 @@ public abstract class BaseValueVector implements ValueVector {
@Override
public TransferPair getTransferPair(BufferAllocator allocator) {
- return getTransferPair(name, allocator);
+ return getTransferPair(getName(), allocator);
}
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BaseVariableWidthVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BaseVariableWidthVector.java
index 5491302..e7fa289 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BaseVariableWidthVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BaseVariableWidthVector.java
@@ -27,7 +27,6 @@ import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.memory.OutOfMemoryException;
import org.apache.arrow.vector.ipc.message.ArrowFieldNode;
import org.apache.arrow.vector.types.pojo.Field;
-import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.CallBack;
import org.apache.arrow.vector.util.OversizedAllocationException;
import org.apache.arrow.vector.util.TransferPair;
@@ -58,17 +57,15 @@ public abstract class BaseVariableWidthVector extends BaseValueVector
/**
* Constructs a new instance.
*
- * @param name A name for the vector
+ * @param field The field materialized by this vector.
* @param allocator The allocator to use for creating/resizing buffers
- * @param fieldType The type of this vector.
*/
- public BaseVariableWidthVector(final String name, final BufferAllocator allocator,
- FieldType fieldType) {
- super(name, allocator);
+ public BaseVariableWidthVector(Field field, final BufferAllocator allocator) {
+ super(allocator);
+ this.field = field;
lastValueAllocationSizeInBytes = INITIAL_BYTE_COUNT;
// -1 because we require one extra slot for the offset array.
lastValueCapacity = INITIAL_VALUE_ALLOCATION - 1;
- field = new Field(name, fieldType, null);
valueCount = 0;
lastSet = -1;
offsetBuffer = allocator.getEmpty();
@@ -76,6 +73,11 @@ public abstract class BaseVariableWidthVector extends BaseValueVector
valueBuffer = allocator.getEmpty();
}
+ @Override
+ public String getName() {
+ return field.getName();
+ }
+
/* TODO:
* see if getNullCount() can be made faster -- O(1)
*/
@@ -656,7 +658,7 @@ public abstract class BaseVariableWidthVector extends BaseValueVector
*/
@Override
public TransferPair getTransferPair(BufferAllocator allocator) {
- return getTransferPair(name, allocator);
+ return getTransferPair(getName(), 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 416ffd5..6d235dd 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.BigIntHolder;
import org.apache.arrow.vector.holders.NullableBigIntHolder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -59,7 +60,18 @@ public class BigIntVector extends BaseFixedWidthVector implements BaseIntVector
* @param allocator allocator for memory management.
*/
public BigIntVector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a BigIntVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public BigIntVector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
reader = 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 ebaca4e..f75ccdc 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.BitHolder;
import org.apache.arrow.vector.holders.NullableBitHolder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.OversizedAllocationException;
import org.apache.arrow.vector.util.TransferPair;
@@ -59,7 +60,18 @@ public class BitVector extends BaseFixedWidthVector {
* @param allocator allocator for memory management.
*/
public BitVector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, 0);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a BitVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field the Field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public BitVector(Field field, BufferAllocator allocator) {
+ super(field, allocator,0);
reader = 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 1e2b012..e634e7e 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.DateDayHolder;
import org.apache.arrow.vector.holders.NullableDateDayHolder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -59,7 +60,18 @@ public class DateDayVector extends BaseFixedWidthVector {
* @param allocator allocator for memory management.
*/
public DateDayVector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a DateDayVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field Field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public DateDayVector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
reader = 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 e8ea5be..7ea427d 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
@@ -27,6 +27,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.DateMilliHolder;
import org.apache.arrow.vector.holders.NullableDateMilliHolder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.DateUtility;
import org.apache.arrow.vector.util.TransferPair;
@@ -62,7 +63,18 @@ public class DateMilliVector extends BaseFixedWidthVector {
* @param allocator allocator for memory management.
*/
public DateMilliVector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a DateMilliVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public DateMilliVector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
reader = new DateMilliReaderImpl(DateMilliVector.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 9664bee..4fc35a3 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
@@ -28,6 +28,7 @@ import org.apache.arrow.vector.holders.DecimalHolder;
import org.apache.arrow.vector.holders.NullableDecimalHolder;
import org.apache.arrow.vector.types.Types.MinorType;
import org.apache.arrow.vector.types.pojo.ArrowType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.DecimalUtility;
import org.apache.arrow.vector.util.TransferPair;
@@ -68,8 +69,19 @@ public class DecimalVector extends BaseFixedWidthVector {
* @param allocator allocator for memory management.
*/
public DecimalVector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
- ArrowType.Decimal arrowType = (ArrowType.Decimal) fieldType.getType();
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a DecimalVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public DecimalVector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
+ ArrowType.Decimal arrowType = (ArrowType.Decimal) field.getFieldType().getType();
reader = new DecimalReaderImpl(DecimalVector.this);
this.precision = arrowType.getPrecision();
this.scale = arrowType.getScale();
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 312c8e5..76572bc 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
@@ -29,6 +29,7 @@ import org.apache.arrow.vector.holders.NullableDurationHolder;
import org.apache.arrow.vector.types.TimeUnit;
import org.apache.arrow.vector.types.Types.MinorType;
import org.apache.arrow.vector.types.pojo.ArrowType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -54,10 +55,20 @@ public class DurationVector extends BaseFixedWidthVector {
* @param allocator allocator for memory management.
*/
public DurationVector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
- reader = new DurationReaderImpl(DurationVector.this);
- this.unit = ((ArrowType.Duration)fieldType.getType()).getUnit();
+ this(new Field(name, fieldType, null), allocator);
+ }
+ /**
+ * Instantiate a DurationVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public DurationVector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
+ reader = new DurationReaderImpl(DurationVector.this);
+ this.unit = ((ArrowType.Duration)field.getFieldType().getType()).getUnit();
}
/**
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 9594d9e..14a66f8 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
@@ -39,12 +39,35 @@ public abstract class ExtensionTypeVector<T extends BaseValueVector & FieldVecto
FieldVector {
private final T underlyingVector;
+ private final String name;
+ /**
+ * Instantiate an extension type vector.
+ * @param name name of the vector
+ * @param allocator allocator for memory management
+ * @param underlyingVector underlying filed vector
+ */
public ExtensionTypeVector(String name, BufferAllocator allocator, T underlyingVector) {
- super(name, allocator);
+ super(allocator);
+ this.name = name;
this.underlyingVector = underlyingVector;
}
+ /**
+ * Instantiate an extension type vector.
+ * @param field field materialized by this vector.
+ * @param allocator allocator for memory management
+ * @param underlyingVector underlying filed vector
+ */
+ public ExtensionTypeVector(Field field, BufferAllocator allocator, T underlyingVector) {
+ this(field.getName(), allocator, underlyingVector);
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
/** Get the underlying vector. */
public T getUnderlyingVector() {
return underlyingVector;
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 a58f994..50179de 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
@@ -26,6 +26,7 @@ import org.apache.arrow.vector.holders.FixedSizeBinaryHolder;
import org.apache.arrow.vector.holders.NullableFixedSizeBinaryHolder;
import org.apache.arrow.vector.types.Types.MinorType;
import org.apache.arrow.vector.types.pojo.ArrowType.FixedSizeBinary;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -61,9 +62,20 @@ public class FixedSizeBinaryVector extends BaseFixedWidthVector {
* @param allocator allocator for memory management.
*/
public FixedSizeBinaryVector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, ((FixedSizeBinary) fieldType.getType()).getByteWidth());
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a FixedSizeBinaryVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public FixedSizeBinaryVector(Field field, BufferAllocator allocator) {
+ super(field, allocator, ((FixedSizeBinary) field.getFieldType().getType()).getByteWidth());
reader = new FixedSizeBinaryReaderImpl(FixedSizeBinaryVector.this);
- byteWidth = ((FixedSizeBinary) fieldType.getType()).getByteWidth();
+ byteWidth = ((FixedSizeBinary) field.getFieldType().getType()).getByteWidth();
}
/**
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 c6d6d5b..7976b02 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.Float4Holder;
import org.apache.arrow.vector.holders.NullableFloat4Holder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -59,7 +60,18 @@ public class Float4Vector extends BaseFixedWidthVector {
* @param allocator allocator for memory management.
*/
public Float4Vector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a Float4Vector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public Float4Vector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
reader = 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 bfcb3e0..109bf5d 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.Float8Holder;
import org.apache.arrow.vector.holders.NullableFloat8Holder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -59,7 +60,18 @@ public class Float8Vector extends BaseFixedWidthVector {
* @param allocator allocator for memory management.
*/
public Float8Vector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a Float8Vector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public Float8Vector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
reader = 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 5255d87..43e5f2c 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.IntHolder;
import org.apache.arrow.vector.holders.NullableIntHolder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -59,7 +60,18 @@ public class IntVector extends BaseFixedWidthVector implements BaseIntVector {
* @param allocator allocator for memory management.
*/
public IntVector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a IntVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public IntVector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
reader = 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 3afe757..1bdbd48 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
@@ -27,6 +27,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.IntervalDayHolder;
import org.apache.arrow.vector.holders.NullableIntervalDayHolder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -63,7 +64,18 @@ public class IntervalDayVector extends BaseFixedWidthVector {
* @param allocator allocator for memory management.
*/
public IntervalDayVector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a IntervalDayVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public IntervalDayVector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
reader = new IntervalDayReaderImpl(IntervalDayVector.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 6d8c001..65e3b59 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
@@ -27,6 +27,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.IntervalYearHolder;
import org.apache.arrow.vector.holders.NullableIntervalYearHolder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -61,7 +62,18 @@ public class IntervalYearVector extends BaseFixedWidthVector {
* @param allocator allocator for memory management.
*/
public IntervalYearVector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a IntervalYearVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public IntervalYearVector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
reader = new IntervalYearReaderImpl(IntervalYearVector.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 2d3f78f..1a06bcd 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
@@ -26,6 +26,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.NullableSmallIntHolder;
import org.apache.arrow.vector.holders.SmallIntHolder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -60,7 +61,18 @@ public class SmallIntVector extends BaseFixedWidthVector implements BaseIntVecto
* @param allocator allocator for memory management.
*/
public SmallIntVector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a SmallIntVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public SmallIntVector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
reader = 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 a8cb0fe..0f58bab 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.NullableTimeMicroHolder;
import org.apache.arrow.vector.holders.TimeMicroHolder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -60,7 +61,18 @@ public class TimeMicroVector extends BaseFixedWidthVector {
* @param allocator allocator for memory management.
*/
public TimeMicroVector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a TimeMicroVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field Field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public TimeMicroVector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
reader = 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 adf7562..5552353 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
@@ -27,6 +27,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.NullableTimeMilliHolder;
import org.apache.arrow.vector.holders.TimeMilliHolder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.DateUtility;
import org.apache.arrow.vector.util.TransferPair;
@@ -62,7 +63,18 @@ public class TimeMilliVector extends BaseFixedWidthVector {
* @param allocator allocator for memory management.
*/
public TimeMilliVector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a TimeMilliVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public TimeMilliVector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
reader = 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 2a28819..2c05952 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.NullableTimeNanoHolder;
import org.apache.arrow.vector.holders.TimeNanoHolder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -59,7 +60,18 @@ public class TimeNanoVector extends BaseFixedWidthVector {
* @param allocator allocator for memory management.
*/
public TimeNanoVector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a TimeNanoVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field Field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public TimeNanoVector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
reader = 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 5198a26..02e9dcb 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.NullableTimeSecHolder;
import org.apache.arrow.vector.holders.TimeSecHolder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -59,7 +60,18 @@ public class TimeSecVector extends BaseFixedWidthVector {
* @param allocator allocator for memory management.
*/
public TimeSecVector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a TimeSecVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field Field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public TimeSecVector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
reader = 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 7027f4f..5b4bc2a 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.holders.TimeStampMicroTZHolder;
import org.apache.arrow.vector.types.TimeUnit;
import org.apache.arrow.vector.types.Types.MinorType;
import org.apache.arrow.vector.types.pojo.ArrowType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -64,6 +65,20 @@ public class TimeStampMicroTZVector extends TimeStampVector {
}
/**
+ * Instantiate a TimeStampMicroTZVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field Field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ 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);
+ }
+
+ /**
* Get a reader that supports reading values from this vector.
*
* @return Field Reader for this 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 2a427de..7a5f8d8 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.NullableTimeStampMicroHolder;
import org.apache.arrow.vector.holders.TimeStampMicroHolder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.DateUtility;
import org.apache.arrow.vector.util.TransferPair;
@@ -62,6 +63,18 @@ public class TimeStampMicroVector extends TimeStampVector {
}
/**
+ * Instantiate a TimeStampMicroVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field Field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public TimeStampMicroVector(Field field, BufferAllocator allocator) {
+ super(field, allocator);
+ reader = new TimeStampMicroReaderImpl(TimeStampMicroVector.this);
+ }
+
+ /**
* Get a reader that supports reading values from this vector.
*
* @return Field Reader for this 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 7cb83be..358aa96 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.holders.TimeStampMilliTZHolder;
import org.apache.arrow.vector.types.TimeUnit;
import org.apache.arrow.vector.types.Types.MinorType;
import org.apache.arrow.vector.types.pojo.ArrowType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -64,6 +65,20 @@ public class TimeStampMilliTZVector extends TimeStampVector {
}
/**
+ * Instantiate a TimeStampMilliTZVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field Field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ 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);
+ }
+
+ /**
* Get a reader that supports reading values from this vector.
*
* @return Field Reader for this 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 b05749e..d05250c 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.NullableTimeStampMilliHolder;
import org.apache.arrow.vector.holders.TimeStampMilliHolder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.DateUtility;
import org.apache.arrow.vector.util.TransferPair;
@@ -62,6 +63,18 @@ public class TimeStampMilliVector extends TimeStampVector {
}
/**
+ * Instantiate a TimeStampMilliVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public TimeStampMilliVector(Field field, BufferAllocator allocator) {
+ super(field, allocator);
+ reader = new TimeStampMilliReaderImpl(TimeStampMilliVector.this);
+ }
+
+ /**
* Get a reader that supports reading values from this vector.
*
* @return Field Reader for this 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 eacc891..a668a6c 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.holders.TimeStampNanoTZHolder;
import org.apache.arrow.vector.types.TimeUnit;
import org.apache.arrow.vector.types.Types.MinorType;
import org.apache.arrow.vector.types.pojo.ArrowType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -64,6 +65,20 @@ public class TimeStampNanoTZVector extends TimeStampVector {
}
/**
+ * Instantiate a TimeStampNanoTZVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field Field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ 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);
+ }
+
+ /**
* Get a reader that supports reading values from this vector.
*
* @return Field Reader for this 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 ccc17de..70f4db6 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.NullableTimeStampNanoHolder;
import org.apache.arrow.vector.holders.TimeStampNanoHolder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.DateUtility;
import org.apache.arrow.vector.util.TransferPair;
@@ -62,6 +63,18 @@ public class TimeStampNanoVector extends TimeStampVector {
}
/**
+ * Instantiate a TimeStampNanoVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field Field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public TimeStampNanoVector(Field field, BufferAllocator allocator) {
+ super(field, allocator);
+ reader = new TimeStampNanoReaderImpl(TimeStampNanoVector.this);
+ }
+
+ /**
* Get a reader that supports reading values from this vector.
*
* @return Field Reader for this 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 3f24c18..fe6fe79 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.holders.TimeStampSecTZHolder;
import org.apache.arrow.vector.types.TimeUnit;
import org.apache.arrow.vector.types.Types.MinorType;
import org.apache.arrow.vector.types.pojo.ArrowType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -64,6 +65,20 @@ public class TimeStampSecTZVector extends TimeStampVector {
}
/**
+ * Instantiate a TimeStampSecTZVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field Field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ 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);
+ }
+
+ /**
* Get a reader that supports reading values from this vector.
*
* @return Field Reader for this vector
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 2293c10..686c4a4 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.NullableTimeStampSecHolder;
import org.apache.arrow.vector.holders.TimeStampSecHolder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.DateUtility;
import org.apache.arrow.vector.util.TransferPair;
@@ -62,6 +63,18 @@ public class TimeStampSecVector extends TimeStampVector {
}
/**
+ * Instantiate a TimeStampSecVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field Field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public TimeStampSecVector(Field field, BufferAllocator allocator) {
+ super(field, allocator);
+ reader = new TimeStampSecReaderImpl(TimeStampSecVector.this);
+ }
+
+ /**
* Get a reader that supports reading values from this vector.
*
* @return Field Reader for this vector
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampVector.java
index d4aa9d8..dea0510 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampVector.java
@@ -20,6 +20,7 @@ package org.apache.arrow.vector;
import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -42,7 +43,18 @@ public abstract class TimeStampVector extends BaseFixedWidthVector {
* @param allocator allocator for memory management.
*/
public TimeStampVector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a TimeStampVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public TimeStampVector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
}
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 66f7ca3..673740d 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
@@ -26,6 +26,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.NullableTinyIntHolder;
import org.apache.arrow.vector.holders.TinyIntHolder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -60,7 +61,18 @@ public class TinyIntVector extends BaseFixedWidthVector implements BaseIntVector
* @param allocator allocator for memory management.
*/
public TinyIntVector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a TinyIntVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public TinyIntVector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
reader = 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 85d48ad..a57e1ef 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
@@ -26,6 +26,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.NullableUInt1Holder;
import org.apache.arrow.vector.holders.UInt1Holder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -45,7 +46,11 @@ public class UInt1Vector extends BaseFixedWidthVector implements BaseIntVector {
}
public UInt1Vector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ public UInt1Vector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
reader = new UInt1ReaderImpl(UInt1Vector.this);
}
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 dbea9f8..c29adf6 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
@@ -26,6 +26,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.NullableUInt2Holder;
import org.apache.arrow.vector.holders.UInt2Holder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -45,7 +46,11 @@ public class UInt2Vector extends BaseFixedWidthVector implements BaseIntVector {
}
public UInt2Vector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ public UInt2Vector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
reader = new UInt2ReaderImpl(UInt2Vector.this);
}
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 b2eadc2..65d0e32 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.NullableUInt4Holder;
import org.apache.arrow.vector.holders.UInt4Holder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -44,7 +45,11 @@ public class UInt4Vector extends BaseFixedWidthVector implements BaseIntVector {
}
public UInt4Vector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ public UInt4Vector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
reader = new UInt4ReaderImpl(UInt4Vector.this);
}
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 a1b3bda..e756132 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
@@ -27,6 +27,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.NullableUInt8Holder;
import org.apache.arrow.vector.holders.UInt8Holder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -46,7 +47,11 @@ public class UInt8Vector extends BaseFixedWidthVector implements BaseIntVector {
}
public UInt8Vector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType, TYPE_WIDTH);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ public UInt8Vector(Field field, BufferAllocator allocator) {
+ super(field, allocator, TYPE_WIDTH);
reader = new UInt8ReaderImpl(UInt8Vector.this);
}
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 093ffac..ac6df0d 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.NullableVarBinaryHolder;
import org.apache.arrow.vector.holders.VarBinaryHolder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -56,7 +57,18 @@ public class VarBinaryVector extends BaseVariableWidthVector {
* @param allocator allocator for memory management.
*/
public VarBinaryVector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a VarBinaryVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public VarBinaryVector(Field field, BufferAllocator allocator) {
+ super(field, allocator);
reader = 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 5b2623c..3e035fa 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
@@ -25,6 +25,7 @@ import org.apache.arrow.vector.complex.reader.FieldReader;
import org.apache.arrow.vector.holders.NullableVarCharHolder;
import org.apache.arrow.vector.holders.VarCharHolder;
import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.Text;
import org.apache.arrow.vector.util.TransferPair;
@@ -55,7 +56,18 @@ public class VarCharVector extends BaseVariableWidthVector {
* @param allocator allocator for memory management.
*/
public VarCharVector(String name, FieldType fieldType, BufferAllocator allocator) {
- super(name, allocator, fieldType);
+ this(new Field(name, fieldType, null), allocator);
+ }
+
+ /**
+ * Instantiate a VarCharVector. This doesn't allocate any memory for
+ * the data in vector.
+ *
+ * @param field field materialized by this vector
+ * @param allocator allocator for memory management.
+ */
+ public VarCharVector(Field field, BufferAllocator allocator) {
+ super(field, allocator);
reader = new VarCharReaderImpl(VarCharVector.this);
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/complex/BaseRepeatedValueVector.java b/java/vector/src/main/java/org/apache/arrow/vector/complex/BaseRepeatedValueVector.java
index a370cb8..3ea418e 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/complex/BaseRepeatedValueVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/complex/BaseRepeatedValueVector.java
@@ -55,13 +55,15 @@ public abstract class BaseRepeatedValueVector extends BaseValueVector implements
protected final CallBack callBack;
protected int valueCount;
protected int offsetAllocationSizeInBytes = INITIAL_VALUE_ALLOCATION * OFFSET_WIDTH;
+ private final String name;
protected BaseRepeatedValueVector(String name, BufferAllocator allocator, CallBack callBack) {
this(name, allocator, DEFAULT_DATA_VECTOR, callBack);
}
protected BaseRepeatedValueVector(String name, BufferAllocator allocator, FieldVector vector, CallBack callBack) {
- super(name, allocator);
+ super(allocator);
+ this.name = name;
this.offsetBuffer = allocator.getEmpty();
this.vector = Preconditions.checkNotNull(vector, "data vector cannot be null");
this.callBack = callBack;
@@ -69,6 +71,11 @@ public abstract class BaseRepeatedValueVector extends BaseValueVector implements
}
@Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
public boolean allocateNewSafe() {
boolean dataAlloc = false;
try {
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 35bede6..f62ec59 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
@@ -65,6 +65,7 @@ public class FixedSizeListVector extends BaseValueVector implements FieldVector,
private ArrowBuf validityBuffer;
private final int listSize;
private final FieldType fieldType;
+ private final String name;
private UnionFixedSizeListReader reader;
private int valueCount;
@@ -94,8 +95,9 @@ public class FixedSizeListVector extends BaseValueVector implements FieldVector,
BufferAllocator allocator,
FieldType fieldType,
CallBack unusedSchemaChangeCallback) {
- super(name, allocator);
+ super(allocator);
+ this.name = name;
this.validityBuffer = allocator.getEmpty();
this.vector = ZeroVector.INSTANCE;
this.fieldType = fieldType;
@@ -117,6 +119,11 @@ public class FixedSizeListVector extends BaseValueVector implements FieldVector,
return MinorType.FIXED_SIZE_LIST;
}
+ @Override
+ public String getName() {
+ return name;
+ }
+
/** Get the fixed size for each list. */
public int getListSize() {
return listSize;
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 bfbc5c7..e8b402c 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
@@ -568,7 +568,7 @@ public class ListVector extends BaseRepeatedValueVector implements FieldVector,
@Override
public Field getField() {
- return new Field(name, fieldType, Collections.singletonList(getDataVector().getField()));
+ return new Field(getName(), fieldType, Collections.singletonList(getDataVector().getField()));
}
@Override
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/types/Types.java b/java/vector/src/main/java/org/apache/arrow/vector/types/Types.java
index 9eb7d95..35aafcb 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/types/Types.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/types/Types.java
@@ -120,6 +120,7 @@ import org.apache.arrow.vector.types.pojo.ArrowType.Time;
import org.apache.arrow.vector.types.pojo.ArrowType.Timestamp;
import org.apache.arrow.vector.types.pojo.ArrowType.Union;
import org.apache.arrow.vector.types.pojo.ArrowType.Utf8;
+import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.CallBack;
@@ -133,8 +134,7 @@ public class Types {
NULL(Null.INSTANCE) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
return ZeroVector.INSTANCE;
@@ -148,11 +148,10 @@ public class Types {
STRUCT(Struct.INSTANCE) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new StructVector(name, allocator, fieldType, schemaChangeCallback);
+ return new StructVector(field.getName(), allocator, field.getFieldType(), schemaChangeCallback);
}
@Override
@@ -163,11 +162,10 @@ public class Types {
TINYINT(new Int(8, true)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new TinyIntVector(name, fieldType, allocator);
+ return new TinyIntVector(field, allocator);
}
@Override
@@ -178,11 +176,10 @@ public class Types {
SMALLINT(new Int(16, true)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new SmallIntVector(name, fieldType, allocator);
+ return new SmallIntVector(field, allocator);
}
@Override
@@ -193,11 +190,10 @@ public class Types {
INT(new Int(32, true)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new IntVector(name, fieldType, allocator);
+ return new IntVector(field, allocator);
}
@Override
@@ -208,11 +204,10 @@ public class Types {
BIGINT(new Int(64, true)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new BigIntVector(name, fieldType, allocator);
+ return new BigIntVector(field, allocator);
}
@Override
@@ -223,11 +218,10 @@ public class Types {
DATEDAY(new Date(DateUnit.DAY)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new DateDayVector(name, fieldType, allocator);
+ return new DateDayVector(field, allocator);
}
@Override
@@ -238,11 +232,10 @@ public class Types {
DATEMILLI(new Date(DateUnit.MILLISECOND)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new DateMilliVector(name, fieldType, allocator);
+ return new DateMilliVector(field, allocator);
}
@Override
@@ -253,11 +246,10 @@ public class Types {
TIMESEC(new Time(TimeUnit.SECOND, 32)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new TimeSecVector(name, fieldType, allocator);
+ return new TimeSecVector(field, allocator);
}
@Override
@@ -268,11 +260,10 @@ public class Types {
TIMEMILLI(new Time(TimeUnit.MILLISECOND, 32)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new TimeMilliVector(name, fieldType, allocator);
+ return new TimeMilliVector(field, allocator);
}
@Override
@@ -283,11 +274,10 @@ public class Types {
TIMEMICRO(new Time(TimeUnit.MICROSECOND, 64)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new TimeMicroVector(name, fieldType, allocator);
+ return new TimeMicroVector(field, allocator);
}
@Override
@@ -298,11 +288,10 @@ public class Types {
TIMENANO(new Time(TimeUnit.NANOSECOND, 64)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new TimeNanoVector(name, fieldType, allocator);
+ return new TimeNanoVector(field, allocator);
}
@Override
@@ -314,11 +303,10 @@ public class Types {
TIMESTAMPSEC(new Timestamp(org.apache.arrow.vector.types.TimeUnit.SECOND, null)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new TimeStampSecVector(name, fieldType, allocator);
+ return new TimeStampSecVector(field, allocator);
}
@Override
@@ -330,11 +318,10 @@ public class Types {
TIMESTAMPMILLI(new Timestamp(org.apache.arrow.vector.types.TimeUnit.MILLISECOND, null)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new TimeStampMilliVector(name, fieldType, allocator);
+ return new TimeStampMilliVector(field, allocator);
}
@Override
@@ -346,11 +333,10 @@ public class Types {
TIMESTAMPMICRO(new Timestamp(org.apache.arrow.vector.types.TimeUnit.MICROSECOND, null)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new TimeStampMicroVector(name, fieldType, allocator);
+ return new TimeStampMicroVector(field, allocator);
}
@Override
@@ -362,11 +348,10 @@ public class Types {
TIMESTAMPNANO(new Timestamp(org.apache.arrow.vector.types.TimeUnit.NANOSECOND, null)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new TimeStampNanoVector(name, fieldType, allocator);
+ return new TimeStampNanoVector(field, allocator);
}
@Override
@@ -377,11 +362,10 @@ public class Types {
INTERVALDAY(new Interval(IntervalUnit.DAY_TIME)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new IntervalDayVector(name, fieldType, allocator);
+ return new IntervalDayVector(field, allocator);
}
@Override
@@ -392,11 +376,10 @@ public class Types {
DURATION(null) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
- BufferAllocator allocator,
- CallBack schemaChangeCallback) {
- return new DurationVector(name, fieldType, allocator);
+ Field field,
+ BufferAllocator allocator,
+ CallBack schemaChangeCallback) {
+ return new DurationVector(field, allocator);
}
@Override
@@ -409,11 +392,10 @@ public class Types {
INTERVALYEAR(new Interval(IntervalUnit.YEAR_MONTH)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new IntervalYearVector(name, fieldType, allocator);
+ return new IntervalYearVector(field, allocator);
}
@Override
@@ -425,11 +407,10 @@ public class Types {
FLOAT4(new FloatingPoint(SINGLE)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new Float4Vector(name, fieldType, allocator);
+ return new Float4Vector(field, allocator);
}
@Override
@@ -441,11 +422,10 @@ public class Types {
FLOAT8(new FloatingPoint(DOUBLE)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new Float8Vector(name, fieldType, allocator);
+ return new Float8Vector(field, allocator);
}
@Override
@@ -456,11 +436,10 @@ public class Types {
BIT(Bool.INSTANCE) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new BitVector(name, fieldType, allocator);
+ return new BitVector(field, allocator);
}
@Override
@@ -471,11 +450,10 @@ public class Types {
VARCHAR(Utf8.INSTANCE) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new VarCharVector(name, fieldType, allocator);
+ return new VarCharVector(field, allocator);
}
@Override
@@ -486,11 +464,10 @@ public class Types {
VARBINARY(Binary.INSTANCE) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new VarBinaryVector(name, fieldType, allocator);
+ return new VarBinaryVector(field, allocator);
}
@Override
@@ -501,11 +478,10 @@ public class Types {
DECIMAL(null) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new DecimalVector(name, fieldType, allocator);
+ return new DecimalVector(field, allocator);
}
@Override
@@ -516,11 +492,10 @@ public class Types {
FIXEDSIZEBINARY(null) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new FixedSizeBinaryVector(name, fieldType, allocator);
+ return new FixedSizeBinaryVector(field, allocator);
}
@Override
@@ -531,11 +506,10 @@ public class Types {
UINT1(new Int(8, false)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new UInt1Vector(name, fieldType, allocator);
+ return new UInt1Vector(field, allocator);
}
@Override
@@ -546,11 +520,10 @@ public class Types {
UINT2(new Int(16, false)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new UInt2Vector(name, fieldType, allocator);
+ return new UInt2Vector(field, allocator);
}
@Override
@@ -561,11 +534,10 @@ public class Types {
UINT4(new Int(32, false)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new UInt4Vector(name, fieldType, allocator);
+ return new UInt4Vector(field, allocator);
}
@Override
@@ -576,11 +548,10 @@ public class Types {
UINT8(new Int(64, false)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new UInt8Vector(name, fieldType, allocator);
+ return new UInt8Vector(field, allocator);
}
@Override
@@ -591,11 +562,10 @@ public class Types {
LIST(List.INSTANCE) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new ListVector(name, allocator, fieldType, schemaChangeCallback);
+ return new ListVector(field.getName(), allocator, field.getFieldType(), schemaChangeCallback);
}
@Override
@@ -606,11 +576,10 @@ public class Types {
FIXED_SIZE_LIST(null) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new FixedSizeListVector(name, allocator, fieldType, schemaChangeCallback);
+ return new FixedSizeListVector(field.getName(), allocator, field.getFieldType(), schemaChangeCallback);
}
@Override
@@ -622,15 +591,14 @@ public class Types {
UNION(new Union(Sparse, null)) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- if (fieldType.getDictionary() != null) {
+ if (field.getFieldType().getDictionary() != null) {
throw new UnsupportedOperationException("Dictionary encoding not supported for complex " +
- "types");
+ "types");
}
- return new UnionVector(name, allocator, schemaChangeCallback);
+ return new UnionVector(field.getName(), allocator, schemaChangeCallback);
}
@Override
@@ -641,11 +609,10 @@ public class Types {
MAP(null) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new MapVector(name, allocator, fieldType, schemaChangeCallback);
+ return new MapVector(field.getName(), allocator, field.getFieldType(), schemaChangeCallback);
}
@Override
@@ -656,11 +623,10 @@ public class Types {
TIMESTAMPSECTZ(null) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new TimeStampSecTZVector(name, fieldType, allocator);
+ return new TimeStampSecTZVector(field, allocator);
}
@Override
@@ -671,11 +637,10 @@ public class Types {
TIMESTAMPMILLITZ(null) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new TimeStampMilliTZVector(name, fieldType, allocator);
+ return new TimeStampMilliTZVector(field, allocator);
}
@Override
@@ -686,11 +651,10 @@ public class Types {
TIMESTAMPMICROTZ(null) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new TimeStampMicroTZVector(name, fieldType, allocator);
+ return new TimeStampMicroTZVector(field, allocator);
}
@Override
@@ -701,11 +665,10 @@ public class Types {
TIMESTAMPNANOTZ(null) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return new TimeStampNanoTZVector(name, fieldType, allocator);
+ return new TimeStampNanoTZVector(field, allocator);
}
@Override
@@ -716,11 +679,11 @@ public class Types {
EXTENSIONTYPE(null) {
@Override
public FieldVector getNewVector(
- String name,
- FieldType fieldType,
+ Field field,
BufferAllocator allocator,
CallBack schemaChangeCallback) {
- return ((ExtensionType) fieldType.getType()).getNewVector(name, fieldType, allocator);
+ return ((ExtensionType) field.getFieldType().getType()).getNewVector(field.getName(),
+ field.getFieldType(), allocator);
}
@Override
@@ -747,10 +710,18 @@ public class Types {
}
/** Constructs a new vector for the given type. */
- public abstract FieldVector getNewVector(
+ public final FieldVector getNewVector(
String name,
FieldType fieldType,
BufferAllocator allocator,
+ CallBack schemaChangeCallback) {
+ return getNewVector(new Field(name, fieldType, null), allocator, schemaChangeCallback);
+ }
+
+ /** Constructs a new vector for the given type. */
+ public abstract FieldVector getNewVector(
+ Field field,
+ BufferAllocator allocator,
CallBack schemaChangeCallback);
public abstract FieldWriter getNewFieldWriter(ValueVector vector);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/types/pojo/Field.java b/java/vector/src/main/java/org/apache/arrow/vector/types/pojo/Field.java
index 99ceb6a..c35e844 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/types/pojo/Field.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/types/pojo/Field.java
@@ -108,7 +108,7 @@ public class Field {
* Construct a new vector of this type using the given allocator.
*/
public FieldVector createVector(BufferAllocator allocator) {
- FieldVector vector = fieldType.createNewSingleVector(name, allocator, null);
+ FieldVector vector = fieldType.createNewSingleVector(this, allocator, null);
vector.initializeChildrenFromFields(children);
return vector;
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/types/pojo/FieldType.java b/java/vector/src/main/java/org/apache/arrow/vector/types/pojo/FieldType.java
index 4cc4067..945f5df 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/types/pojo/FieldType.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/types/pojo/FieldType.java
@@ -98,4 +98,9 @@ public class FieldType {
return minorType.getNewVector(name, this, allocator, schemaCallBack);
}
+ public FieldVector createNewSingleVector(Field field, BufferAllocator allocator, CallBack schemaCallBack) {
+ MinorType minorType = Types.getMinorTypeForArrowType(type);
+ return minorType.getNewVector(field, allocator, schemaCallBack);
+ }
+
}
diff --git a/java/vector/src/test/java/org/apache/arrow/vector/TestVectorAlloc.java b/java/vector/src/test/java/org/apache/arrow/vector/TestVectorAlloc.java
new file mode 100644
index 0000000..089f1f8
--- /dev/null
+++ b/java/vector/src/test/java/org/apache/arrow/vector/TestVectorAlloc.java
@@ -0,0 +1,106 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.arrow.vector;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Arrays;
+import java.util.Collections;
+
+import org.apache.arrow.memory.BufferAllocator;
+import org.apache.arrow.memory.RootAllocator;
+import org.apache.arrow.vector.types.TimeUnit;
+import org.apache.arrow.vector.types.Types;
+import org.apache.arrow.vector.types.Types.MinorType;
+import org.apache.arrow.vector.types.pojo.ArrowType;
+import org.apache.arrow.vector.types.pojo.ArrowType.Decimal;
+import org.apache.arrow.vector.types.pojo.ArrowType.Duration;
+import org.apache.arrow.vector.types.pojo.ArrowType.FixedSizeBinary;
+import org.apache.arrow.vector.types.pojo.ArrowType.Timestamp;
+import org.apache.arrow.vector.types.pojo.Field;
+import org.apache.arrow.vector.types.pojo.FieldType;
+import org.apache.arrow.vector.types.pojo.Schema;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class TestVectorAlloc {
+ private BufferAllocator rootAllocator;
+
+ @Before
+ public void init() {
+ rootAllocator = new RootAllocator(Long.MAX_VALUE);
+ }
+
+ @After
+ public void terminate() throws Exception {
+ rootAllocator.close();
+ }
+
+ private static Field field(String name, ArrowType type) {
+ return new Field(name, new FieldType(true, type, null), Collections.emptyList());
+ }
+
+ @Test
+ public void testVectorAllocWithField() {
+ Schema schema = new Schema(Arrays.asList(
+ field("TINYINT", MinorType.TINYINT.getType()),
+ field("SMALLINT", MinorType.SMALLINT.getType()),
+ field("INT", MinorType.INT.getType()),
+ field("BIGINT", MinorType.BIGINT.getType()),
+ field("UINT1", MinorType.UINT1.getType()),
+ field("UINT2", MinorType.UINT2.getType()),
+ field("UINT4", MinorType.UINT4.getType()),
+ field("UINT8", MinorType.UINT8.getType()),
+ field("FLOAT4", MinorType.FLOAT4.getType()),
+ field("FLOAT8", MinorType.FLOAT8.getType()),
+ field("UTF8", MinorType.VARCHAR.getType()),
+ field("VARBINARY", MinorType.VARBINARY.getType()),
+ field("BIT", MinorType.BIT.getType()),
+ field("DECIMAL", new Decimal(38, 5)),
+ field("FIXEDSIZEBINARY", new FixedSizeBinary(50)),
+ field("DATEDAY", MinorType.DATEDAY.getType()),
+ field("DATEMILLI", MinorType.DATEMILLI.getType()),
+ field("TIMESEC", MinorType.TIMESEC.getType()),
+ field("TIMEMILLI", MinorType.TIMEMILLI.getType()),
+ field("TIMEMICRO", MinorType.TIMEMICRO.getType()),
+ field("TIMENANO", MinorType.TIMENANO.getType()),
+ field("TIMESTAMPSEC", MinorType.TIMESTAMPSEC.getType()),
+ field("TIMESTAMPMILLI", MinorType.TIMESTAMPMILLI.getType()),
+ field("TIMESTAMPMICRO", MinorType.TIMESTAMPMICRO.getType()),
+ field("TIMESTAMPNANO", MinorType.TIMESTAMPNANO.getType()),
+ field("TIMESTAMPSECTZ", new Timestamp(TimeUnit.SECOND, "PST")),
+ field("TIMESTAMPMILLITZ", new Timestamp(TimeUnit.MILLISECOND, "PST")),
+ field("TIMESTAMPMICROTZ", new Timestamp(TimeUnit.MICROSECOND, "PST")),
+ field("TIMESTAMPNANOTZ", new Timestamp(TimeUnit.NANOSECOND, "PST")),
+ field("INTERVALDAY", MinorType.INTERVALDAY.getType()),
+ field("INTERVALYEAR", MinorType.INTERVALYEAR.getType()),
+ field("DURATION", new Duration(TimeUnit.MILLISECOND))
+ ));
+
+ try (BufferAllocator allocator = rootAllocator.newChildAllocator("child", 0, Long.MAX_VALUE)) {
+ for (Field field : schema.getFields()) {
+ try (FieldVector vector = field.createVector(allocator)) {
+ assertEquals(vector.getMinorType(),
+ Types.getMinorTypeForArrowType(field.getFieldType().getType()));
+ vector.allocateNew();
+ }
+ }
+ }
+ }
+}