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

  1. Cast the Arrow column to a supported type before transfer
  2. Add a mapping case for the Arrow type in ArrowBlockBuilder
  3. 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.