From 2923a453ef005278db834e85d6fa084dbc3453a3 Mon Sep 17 00:00:00 2001 From: Steven Phillips Date: Thu, 10 Aug 2017 15:15:28 -0700 Subject: [PATCH 1/2] ARROW-1347: [JAVA] return consistent child field name for List vectors --- .../main/java/org/apache/arrow/vector/complex/ListVector.java | 4 ++++ 1 file changed, 4 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 79aca0c7b30..15dbcf717be 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 @@ -49,6 +49,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; @@ -323,6 +324,9 @@ public int getBufferSize() { @Override public Field getField() { + if (getDataVector() == ZeroVector.INSTANCE) { + 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())); } From c240378b3122d95351ad97db78bfb45d34097d61 Mon Sep 17 00:00:00 2001 From: Bryan Cutler Date: Wed, 20 Sep 2017 16:25:28 -0700 Subject: [PATCH 2/2] changed to use instanceof and added test --- .../org/apache/arrow/vector/complex/ListVector.java | 2 +- .../java/org/apache/arrow/vector/TestListVector.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) 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 15dbcf717be..470317f8c07 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 @@ -324,7 +324,7 @@ public int getBufferSize() { @Override public Field getField() { - if (getDataVector() == ZeroVector.INSTANCE) { + 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 276121c0d1f..1c9b5749980 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 @@ -628,4 +628,16 @@ public void testGetBufferAddress() throws Exception { assertEquals(offsetAddress, buffers.get(1).memoryAddress()); } } + + @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)); + } + } }