prestodb/presto · error · UnsupportedOperationException
The data type {field.getType().getTypeID()} is not supported
Error message
The data type {field.getType().getTypeID()} is not supported. What it means
getPrestoTypeFromArrowField's default branch: the Arrow field's type ID (e.g. union, dense union, or other unmapped Arrow types) has no Presto type mapping, so schema conversion of the Arrow data fails.
Source
Thrown at presto-common-arrow/src/main/java/com/facebook/plugin/arrow/ArrowBlockBuilder.java:164
List<Field> children = field.getChildren();
checkArgument(children.size() == 1, "Arrow List expected to have 1 child Field, got: " + children.size());
return new ArrayType(getPrestoTypeFromArrowField(field.getChildren().get(0)));
}
case Map: {
List<Field> children = field.getChildren();
checkArgument(children.size() == 1, "Arrow Map expected to have 1 child Field for entries, got: " + children.size());
Field entryField = children.get(0);
checkArgument(entryField.getChildren().size() == 2, "Arrow Map entries expected to have 2 child Fields, got: " + children.size());
Type keyType = getPrestoTypeFromArrowField(entryField.getChildren().get(0));
Type valueType = getPrestoTypeFromArrowField(entryField.getChildren().get(1));
return typeManager.getType(parseTypeSignature(format("map(%s,%s)", keyType.getTypeSignature(), valueType.getTypeSignature())));
}
case Struct: {
List<RowType.Field> children = field.getChildren().stream().map(child -> new RowType.Field(Optional.of(child.getName()), getPrestoTypeFromArrowField(child))).collect(toImmutableList());
return RowType.from(children);
}
default:
throw new UnsupportedOperationException("The data type " + field.getType().getTypeID() + " is not supported.");
}
}
private Type getPrestoTypeForArrowFloatingPointType(ArrowType.FloatingPoint floatingPoint)
{
switch (floatingPoint.getPrecision()) {
case SINGLE:
return RealType.REAL;
case DOUBLE:
return DoubleType.DOUBLE;
default:
throw new ArrowException(ARROW_FLIGHT_TYPE_ERROR, "Unexpected floating point precision: " + floatingPoint.getPrecision());
}
}
private Type getPrestoTypeForArrowIntType(ArrowType.Int intType)
{
switch (intType.getBitWidth()) {View on GitHub (pinned to 55bb57d202)
Solutions
- Cast the Arrow column to a supported type before transfer
- Add a mapping case for the Arrow type in ArrowBlockBuilder
- Avoid querying unsupported Arrow field types
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at presto-common-arrow/src/main/java/com/facebook/plugin/arrow/ArrowBlockBuilder.java:164 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/aa27ccf0f2027193.
Report an issue: GitHub.