This is an automated email from the ASF dual-hosted git repository.

lidavidm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-java.git


The following commit(s) were added to refs/heads/main by this push:
     new 91b17f63 GH-625: Map MinorType getNewFieldWriter returns 
UnionMapWriter (#627)
91b17f63 is described below

commit 91b17f63c36ee01dc3fb2d4ab64fc8588426f1e8
Author: wsuppiger <[email protected]>
AuthorDate: Tue Feb 25 07:20:44 2025 -0500

    GH-625: Map MinorType getNewFieldWriter returns UnionMapWriter (#627)
    
    ## What's Changed
    
    Closes #625
    
    ---------
    
    Co-authored-by: William Suppiger <[email protected]>
---
 .../java/org/apache/arrow/vector/types/Types.java  |  3 ++-
 .../org/apache/arrow/vector/TestMapVector.java     | 22 ++++++++++++++++++++++
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/vector/src/main/java/org/apache/arrow/vector/types/Types.java 
b/vector/src/main/java/org/apache/arrow/vector/types/Types.java
index e9b963b6..17503f98 100644
--- a/vector/src/main/java/org/apache/arrow/vector/types/Types.java
+++ b/vector/src/main/java/org/apache/arrow/vector/types/Types.java
@@ -116,6 +116,7 @@ import org.apache.arrow.vector.complex.impl.UInt8WriterImpl;
 import org.apache.arrow.vector.complex.impl.UnionLargeListViewWriter;
 import org.apache.arrow.vector.complex.impl.UnionLargeListWriter;
 import org.apache.arrow.vector.complex.impl.UnionListWriter;
+import org.apache.arrow.vector.complex.impl.UnionMapWriter;
 import org.apache.arrow.vector.complex.impl.UnionWriter;
 import org.apache.arrow.vector.complex.impl.VarBinaryWriterImpl;
 import org.apache.arrow.vector.complex.impl.VarCharWriterImpl;
@@ -721,7 +722,7 @@ public class Types {
 
       @Override
       public FieldWriter getNewFieldWriter(ValueVector vector) {
-        return new UnionListWriter((MapVector) vector);
+        return new UnionMapWriter((MapVector) vector);
       }
     },
     TIMESTAMPSECTZ(null) {
diff --git a/vector/src/test/java/org/apache/arrow/vector/TestMapVector.java 
b/vector/src/test/java/org/apache/arrow/vector/TestMapVector.java
index a4197c50..313d83ec 100644
--- a/vector/src/test/java/org/apache/arrow/vector/TestMapVector.java
+++ b/vector/src/test/java/org/apache/arrow/vector/TestMapVector.java
@@ -35,6 +35,7 @@ import org.apache.arrow.vector.complex.impl.UnionMapWriter;
 import org.apache.arrow.vector.complex.reader.FieldReader;
 import org.apache.arrow.vector.complex.writer.BaseWriter.ListWriter;
 import org.apache.arrow.vector.complex.writer.BaseWriter.MapWriter;
+import org.apache.arrow.vector.complex.writer.FieldWriter;
 import org.apache.arrow.vector.types.Types.MinorType;
 import org.apache.arrow.vector.types.pojo.ArrowType;
 import org.apache.arrow.vector.types.pojo.Field;
@@ -1241,4 +1242,25 @@ public class TestMapVector {
     assertEquals(intField, vec.getField().getChildren().get(0));
     assertEquals(intField, res.getField().getChildren().get(0));
   }
+
+  @Test
+  public void testMapTypeReturnsSupportedMapWriter() {
+    try (final MapVector vector = MapVector.empty("map", allocator, false)) {
+      vector.allocateNew();
+      FieldWriter mapWriter = MinorType.MAP.getNewFieldWriter(vector);
+
+      mapWriter.startMap();
+      mapWriter.startEntry();
+      mapWriter.key().bigInt().writeBigInt(1);
+      mapWriter.value().integer().writeInt(11);
+      mapWriter.endEntry();
+      mapWriter.endMap();
+
+      Object result = vector.getObject(0);
+      ArrayList<?> resultSet = (ArrayList<?>) result;
+      Map<?, ?> resultStruct = (Map<?, ?>) resultSet.get(0);
+      assertEquals(1L, getResultKey(resultStruct));
+      assertEquals(11, getResultValue(resultStruct));
+    }
+  }
 }

Reply via email to