From 0c1042ef265770d05b08e10d8ba66a62e4f9bd63 Mon Sep 17 00:00:00 2001 From: Bryan Cutler Date: Thu, 21 Sep 2017 15:37:45 -0700 Subject: [PATCH] ARROW-1347: [JAVA] Return consistent child field name for List Vectors This makes the child fields of ListVector have consistent names of `ListVector.DATA_VECTOR_NAME`. Previously, an empty ListVector would have a child name of `ZeroVector.name` which is "[DEFAULT]". Author: Bryan Cutler Author: Steven Phillips Closes #1119 from BryanCutler/java-ListVector-child-name-ARROW-1347 and squashes the following commits: c240378 [Bryan Cutler] changed to use instanceof and added test 2923a45 [Steven Phillips] ARROW-1347: [JAVA] return consistent child field name for List vectors --- .../org/apache/arrow/vector/complex/ListVector.java | 4 ++++ .../java/org/apache/arrow/vector/TestListVector.java | 12 ++++++++++++ 2 files changed, 16 insertions(+) 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 11e5dbf06dcff..1ecd79bfc1a61 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 @@ -48,6 +48,7 @@ import org.apache.arrow.vector.schema.ArrowFieldNode; import org.apache.arrow.vector.types.Types.MinorType; import org.apache.arrow.vector.types.pojo.ArrowType; +import org.apache.arrow.vector.types.pojo.ArrowType.Null; import org.apache.arrow.vector.types.pojo.DictionaryEncoding; import org.apache.arrow.vector.types.pojo.Field; import org.apache.arrow.vector.types.pojo.FieldType; @@ -296,6 +297,9 @@ public int getBufferSize() { @Override public Field getField() { + if (getDataVector() instanceof ZeroVector) { + return new Field(name, fieldType, ImmutableList.of(new Field(DATA_VECTOR_NAME, FieldType.nullable(Null.INSTANCE), null))); + } return new Field(name, fieldType, ImmutableList.of(getDataVector().getField())); } diff --git a/java/vector/src/test/java/org/apache/arrow/vector/TestListVector.java b/java/vector/src/test/java/org/apache/arrow/vector/TestListVector.java index 11be3298f7533..21631ea774655 100644 --- a/java/vector/src/test/java/org/apache/arrow/vector/TestListVector.java +++ b/java/vector/src/test/java/org/apache/arrow/vector/TestListVector.java @@ -80,4 +80,16 @@ public void testCopyFrom() throws Exception { Assert.assertTrue("shouldn't be null", reader.isSet()); } } + + @Test + public void testConsistentChildName() throws Exception { + try (ListVector listVector = ListVector.empty("sourceVector", allocator)) { + String emptyListStr = listVector.getField().toString(); + assertTrue(emptyListStr.contains(ListVector.DATA_VECTOR_NAME)); + + listVector.addOrGetVector(FieldType.nullable(MinorType.INT.getType())); + String emptyVectorStr = listVector.getField().toString(); + assertTrue(emptyVectorStr.contains(ListVector.DATA_VECTOR_NAME)); + } + } }