prestodb/presto · error · PrestoException

NOT_SUPPORTED

NOT_SUPPORTED

Error message

Unsupported Changelog Operation: 

What it means

ChangelogOperation.fromIcebergChangelogOperation maps Iceberg UpdateRequirements/row-level change operations onto Presto changelog operations. An operation enum value not covered by the switch (e.g. added in a newer Iceberg version) throws NOT_SUPPORTED with the offending operation appended.

Source

Thrown at presto-iceberg/src/main/java/com/facebook/presto/iceberg/changelog/ChangelogOperation.java:48

    public static ChangelogOperation fromIcebergChangelogOperation(org.apache.iceberg.ChangelogOperation operation)
    {
        ChangelogOperation prestoOperation;
        switch (operation) {
            case INSERT:
                prestoOperation = INSERT;
                break;
            case DELETE:
                prestoOperation = DELETE;
                break;
            case UPDATE_BEFORE:
                prestoOperation = UPDATE_BEFORE;
                break;
            case UPDATE_AFTER:
                prestoOperation = UPDATE_AFTER;
                break;
            default:
                throw new PrestoException(NOT_SUPPORTED, "Unsupported Changelog Operation: " + operation);
        }

        return prestoOperation;
    }
}

View on GitHub (pinned to 55bb57d202)

Solutions

  1. Upgrade the Presto Iceberg connector to match the Iceberg library version in use.
  2. Check changelogSplitInfo.getOperation() values on the table and avoid operations that emit the unsupported kind.
  3. Catch NOT_SUPPORTED and map the unknown operation manually if you control the pipeline.

Example fix

// before
throw new PrestoException(NOT_SUPPORTED, "Unsupported Changelog Operation: " + operation);
// after (upgrade or extend)
case OTHER_OP: return PrestoChangelogOperation.INSERT; // add mapping for the new operation
Defensive patterns

Strategy: try-catch

Type guard

boolean isKnownOperation(Operation op) {
    switch (op) { case INSERT: case DELETE: case UPDATE_BEFORE: case UPDATE_AFTER: return true; default: return false; }
}

Try / catch

try { rows = changelogTableSource.read(); } catch (PrestoException e) { if (e.getMessage().startsWith("Unsupported Changelog Operation")) { /* upgrade connector or map op */ } throw e; }

Prevention

When it happens

Trigger: Processing an Iceberg changelog scan whose operation enum value is not one of INSERT/DELETE/UPDATE_BEFORE/UPDATE_AFTER — typically a new Iceberg operation type this connector build doesn't know.

Common situations: Iceberg v2 tables producing operations from newer Iceberg library versions consumed by an older Presto build; custom operations injected by other engines.

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/9266c3e09d87cf35. Report an issue: GitHub.