prestodb/presto · error · UnsupportedOperationException

getMaterializedViewStatus is not supported

Error message

getMaterializedViewStatus is not supported

What it means

MetadataResolver.getMaterializedViewStatus has a default implementation that throws UnsupportedOperationException("getMaterializedViewStatus is not supported"). Only resolvers backing materialized views implement it; the engine calls it (e.g. from MaterializedViewStatus query handling) when it needs to know how much of a materialized view is materialized.

Source

Thrown at presto-spi/src/main/java/com/facebook/presto/spi/analyzer/MetadataResolver.java:117

    /**
     * Returns true if provided catalog, schema and object name is a materialized view.
     *
     * @param viewName the fully qualified name (catalog, schema, and view) of the view.
     */
    default boolean isMaterializedView(QualifiedObjectName viewName)
    {
        return getMaterializedView(viewName).isPresent();
    }

    /**
     * Get the materialized view status to inform the engine how much data has been materialized in the view
     * @param materializedViewName materialized view name
     * @param baseQueryDomain The domain from which to consider missing partitions.
     */
    default MaterializedViewStatus getMaterializedViewStatus(QualifiedObjectName materializedViewName, TupleDomain<String> baseQueryDomain)
    {
        throw new UnsupportedOperationException("getMaterializedViewStatus is not supported");
    }
}

View on GitHub (pinned to 55bb57d202)

Solutions

  1. Avoid materialized-view status operations on catalogs/connectors that don't implement it
  2. Implement getMaterializedViewStatus in your ConnectorMetadata/MetadataResolver adapter
  3. Catch UnsupportedOperationException and return a 'status unknown' result in engine-side calling code

Example fix

// before
MaterializedViewStatus s = resolver.getMaterializedViewStatus(viewName, domain);
// after
try {
    MaterializedViewStatus s = resolver.getMaterializedViewStatus(viewName, domain);
} catch (UnsupportedOperationException e) {
    // treat as unsupported for this catalog
}
Defensive patterns

Strategy: try-catch

Try / catch

try { status = resolver.getMaterializedViewStatus(name, domain); } catch (UnsupportedOperationException e) { status = null; /* unknown/unsupported */ }

Prevention

When it happens

Trigger: Querying or refreshing a materialized view where the active metadata resolver does not override getMaterializedViewStatus, e.g. catalogs lacking materialized view support being asked for view status.

Common situations: Running SHOW/refresh on materialized views in a catalog whose connector never implemented this method; version upgrades introducing materialized-view features to engines targeting older connectors.

Related errors


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