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));
+ }
+ }
}