diff --git a/java/c/src/test/java/org/apache/arrow/c/RoundtripTest.java b/java/c/src/test/java/org/apache/arrow/c/RoundtripTest.java index 6a2b476b0c395..b9ea67b7190ed 100644 --- a/java/c/src/test/java/org/apache/arrow/c/RoundtripTest.java +++ b/java/c/src/test/java/org/apache/arrow/c/RoundtripTest.java @@ -462,6 +462,13 @@ public void testUInt8Vector() { } } + @Test + public void testNullVector() { + try (final NullVector vector = new NullVector("v", 1024)) { + assertTrue(roundtrip(vector, NullVector.class)); + } + } + @Test public void testVarBinaryVector() { try (final VarBinaryVector vector = new VarBinaryVector("v", allocator)) { diff --git a/java/vector/src/main/java/org/apache/arrow/vector/NullVector.java b/java/vector/src/main/java/org/apache/arrow/vector/NullVector.java index 1010d8d475f05..b88ffb9209858 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/NullVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/NullVector.java @@ -57,6 +57,16 @@ public NullVector(String name) { this(name, FieldType.nullable(Types.MinorType.NULL.getType())); } + /** + * Instantiate a NullVector with the given number of values. + * + * @param name name of the vector + * @param valueCount number of values (i.e., nulls) in this vector. + */ + public NullVector(String name, int valueCount) { + this(new Field(name, FieldType.nullable(Types.MinorType.NULL.getType()), null), valueCount); + } + /** * Instantiate a NullVector. * @@ -73,8 +83,18 @@ public NullVector(String name, FieldType fieldType) { * @param field field materialized by this vector. */ public NullVector(Field field) { - this.valueCount = 0; + this(field, 0); + } + + /** + * Instantiate a NullVector with the given number of values. + * + * @param field field materialized by this vector. + * @param valueCount number of values (i.e., nulls) in this vector. + */ + public NullVector(Field field, int valueCount) { this.field = field; + this.valueCount = valueCount; } @Deprecated @@ -192,6 +212,7 @@ public List getChildrenFromFields() { @Override public void loadFieldBuffers(ArrowFieldNode fieldNode, List ownBuffers) { Preconditions.checkArgument(ownBuffers.isEmpty(), "Null vector has no buffers"); + this.valueCount = fieldNode.getLength(); } @Override