Skip to content

Commit d1036a1

Browse files
committed
GH-586: Override fixedSizeBinary method for UnionMapWriter
1 parent aee8a10 commit d1036a1

File tree

2 files changed

+34
-3
lines changed

2 files changed

+34
-3
lines changed

vector/src/main/codegen/templates/UnionMapWriter.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,4 +243,16 @@ public ExtensionWriter extension(ArrowType type) {
243243
return super.extension(type);
244244
}
245245
}
246+
247+
@Override
248+
public FixedSizeBinaryWriter fixedSizeBinary() {
249+
switch (mode) {
250+
case KEY:
251+
return entryWriter.fixedSizeBinary(MapVector.KEY_NAME);
252+
case VALUE:
253+
return entryWriter.fixedSizeBinary(MapVector.VALUE_NAME);
254+
default:
255+
return this;
256+
}
257+
}
246258
}

vector/src/test/java/org/apache/arrow/vector/TestMapVector.java

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ public void testCopyFrom() throws Exception {
168168
// {1 -> 11, 2 -> 22, 3 -> 33}
169169
// null
170170
// {2 -> null}
171+
// {3 -> null}
171172
writer.setPosition(0); // optional
172173
writer.startMap();
173174
writer.startEntry();
@@ -191,14 +192,22 @@ public void testCopyFrom() throws Exception {
191192
writer.endEntry();
192193
writer.endMap();
193194

194-
writer.setValueCount(3);
195+
writer.setPosition(3);
196+
writer.startMap();
197+
writer.startEntry();
198+
writer.key().bigInt().writeBigInt(3);
199+
writer.value().fixedSizeBinary().writeNull();
200+
writer.endEntry();
201+
writer.endMap();
202+
203+
writer.setValueCount(4);
195204

196205
// copy values from input to output
197206
outVector.allocateNew();
198-
for (int i = 0; i < 3; i++) {
207+
for (int i = 0; i < 4; i++) {
199208
outVector.copyFrom(i, i, inVector);
200209
}
201-
outVector.setValueCount(3);
210+
outVector.setValueCount(4);
202211

203212
// assert the output vector is correct
204213
FieldReader reader = outVector.getReader();
@@ -207,6 +216,8 @@ public void testCopyFrom() throws Exception {
207216
assertFalse(reader.isSet(), "should be null");
208217
reader.setPosition(2);
209218
assertTrue(reader.isSet(), "shouldn't be null");
219+
reader.setPosition(3);
220+
assertTrue(reader.isSet(), "shouldn't be null");
210221

211222
/* index 0 */
212223
Object result = outVector.getObject(0);
@@ -233,6 +244,14 @@ public void testCopyFrom() throws Exception {
233244
resultStruct = (Map<?, ?>) resultSet.get(0);
234245
assertEquals(2L, getResultKey(resultStruct));
235246
assertFalse(resultStruct.containsKey(MapVector.VALUE_NAME));
247+
248+
/* index 3 */
249+
result = outVector.getObject(3);
250+
resultSet = (ArrayList<?>) result;
251+
assertEquals(1, resultSet.size());
252+
resultStruct = (Map<?, ?>) resultSet.get(0);
253+
assertEquals(3L, getResultKey(resultStruct));
254+
assertFalse(resultStruct.containsKey(MapVector.VALUE_NAME));
236255
}
237256
}
238257

0 commit comments

Comments
 (0)