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
- Upgrade the Presto Iceberg connector to match the Iceberg library version in use.
- Check changelogSplitInfo.getOperation() values on the table and avoid operations that emit the unsupported kind.
- 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
- Pin Iceberg library version compatible with the connector
- Test changelog reads after any Iceberg upgrade
- Check operation values on the table before enabling changelog queries
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.