prestodb/presto · error · PrestoException

NOT_SUPPORTED

NOT_SUPPORTED

Error message

Unsupported parquet type: 

What it means

ColumnReaderFactory.createReader maps a Parquet physical type to a ColumnReader implementation; when the primitive type falls through all supported cases (e.g., an unexpected INT96 usage or unmapped physical type), a PrestoException with NOT_SUPPORTED is raised. The library simply has no reader for that Parquet type combination.

Source

Thrown at presto-parquet/src/main/java/com/facebook/presto/parquet/ColumnReaderFactory.java:142

                    return new LongTimeMicrosColumnReader(descriptor);
                }
                return createDecimalColumnReader(descriptor).orElseGet(() -> new LongColumnReader(descriptor));
            case INT96:
                return new TimestampColumnReader(descriptor);
            case FLOAT:
                return new FloatColumnReader(descriptor);
            case DOUBLE:
                return new DoubleColumnReader(descriptor);
            case BINARY:
                return createDecimalColumnReader(descriptor).orElseGet(() -> new BinaryColumnReader(descriptor));
            case FIXED_LEN_BYTE_ARRAY:
                if (isUuidType(descriptor)) {
                    return new BinaryColumnReader(descriptor);
                }
                return createDecimalColumnReader(descriptor)
                        .orElseThrow(() -> new PrestoException(NOT_SUPPORTED, " type FIXED_LEN_BYTE_ARRAY supported as DECIMAL; got " + descriptor.getPrimitiveType().getOriginalType()));
            default:
                throw new PrestoException(NOT_SUPPORTED, "Unsupported parquet type: " + descriptor.getPrimitiveType().getPrimitiveTypeName());
        }
    }

    private static Optional<ColumnReader> createDecimalBatchColumnReader(RichColumnDescriptor descriptor)
    {
        if (isDecimalType(descriptor)) {
            if (isShortDecimalType(descriptor)) {
                return Optional.of(new ShortDecimalFlatBatchReader(descriptor));
            }
            return Optional.of(new LongDecimalFlatBatchReader(descriptor));
        }
        return Optional.empty();
    }

    private static Optional<AbstractColumnReader> createDecimalColumnReader(RichColumnDescriptor descriptor)
    {
        if (isDecimalType(descriptor)) {
            if (isShortDecimalType(descriptor)) {

View on GitHub (pinned to 55bb57d202)

Solutions

  1. Upgrade Presto to a version supporting the type.
  2. Exclude/reproject the unsupported column from the query or table schema.
  3. Rewrite the Parquet file with supported types (e.g., cast to DECIMAL/BINARY in the writer pipeline).
  4. Convert the file with parquet-tools/Spark to a supported type set before ingestion.

Example fix

// before: selecting unsupported column
SELECT weird_col FROM parquet_table;
// after
SELECT CAST(other_col AS VARCHAR) AS safe_col FROM parquet_table; // drop weird_col
Defensive patterns

Strategy: validation

Validate before calling

Set<PrimitiveTypeName> supported = Set.of(INT96, BINARY, INT64, DOUBLE, FLOAT, BOOLEAN, INT32, FIXED_LEN_BYTE_ARRAY);
if (!supported.contains(schema.getType("col"))) throw new IllegalArgumentException("unsupported parquet type");

Try / catch

try { reader = ColumnReaderFactory.createReader(descriptor); } catch (PrestoException e) {
    if (e.getErrorCode().equals(NOT_SUPPORTED.toErrorCode())) {
        columns.remove(descriptor); return; // skip unsupported column
    }
    throw e;
}

Prevention

When it happens

Trigger: A Parquet file contains a column whose PrimitiveTypeName has no case in createReader — typically an exotic/unmapped type or a type reached via a schema combination the reader doesn't handle.

Common situations: Files written by newer/other engines with types Presto's parquet reader predates (e.g., certain INTERVAL/JSON annotations); TIMESTAMP_MILLIS conversions not covered; reading files from tools emitting rare types.

Understand the failure class

Background: Presto NOT_SUPPORTED error: what "not supported" means and how to fix it — this error's family across 3 libraries.

Related errors


AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04). Data as JSON: /api/errors/d781f6c5d77ee981. Report an issue: GitHub.