Skip to content

Commit b3f2fb5

Browse files
Require key type = VARCHAR to encode Avro maps
1 parent d7e6665 commit b3f2fb5

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

adapter/avro/src/main/java/org/apache/arrow/adapter/avro/ArrowToAvroUtils.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -691,6 +691,10 @@ private static BaseAvroProducer<?> createProducer(FieldVector vector, boolean nu
691691
case MAP:
692692
MapVector mapVector = (MapVector) vector;
693693
StructVector entryVector = (StructVector) mapVector.getDataVector();
694+
Types.MinorType keyType = entryVector.getChildrenFromFields().get(0).getMinorType();
695+
if (keyType != Types.MinorType.VARCHAR) {
696+
throw new IllegalArgumentException("MAP key type must be VARCHAR for Avro encoding");
697+
}
694698
VarCharVector keyVector = (VarCharVector) entryVector.getChildrenFromFields().get(0);
695699
FieldVector valueVector = entryVector.getChildrenFromFields().get(1);
696700
Producer<?> keyProducer = new AvroStringProducer(keyVector);

0 commit comments

Comments
 (0)