prestodb/presto · error · PrestoException

UNSUPPORTED_ANALYZER_TYPE

UNSUPPORTED_ANALYZER_TYPE

Error message

Unsupported query preparer type: 

What it means

QueryPreparerProviderManager.getQueryPreparerProvider looks up a registered QueryPreparerProvider by preparerType and throws UNSUPPORTED_ANALYZER_TYPE when no provider is registered under that key. This indicates the requested query preparer/analyzer type is not configured in this Presto deployment.

Source

Thrown at presto-main-base/src/main/java/com/facebook/presto/sql/analyzer/QueryPreparerProviderManager.java:52

        addQueryPreparerProvider(queryPreparerProvider);
    }

    public void addQueryPreparerProvider(QueryPreparerProvider preparerProvider)
    {
        requireNonNull(preparerProvider, "preparerProvider is null");

        if (queryPreparerProviders.putIfAbsent(preparerProvider.getType(), preparerProvider) != null) {
            throw new IllegalArgumentException(format("Query preparer provider '%s' is already registered", preparerProvider.getType()));
        }
    }

    public QueryPreparerProvider getQueryPreparerProvider(String preparerType)
    {
        if (queryPreparerProviders.containsKey(preparerType)) {
            return queryPreparerProviders.get(preparerType);
        }

        throw new PrestoException(UNSUPPORTED_ANALYZER_TYPE, "Unsupported query preparer type: " + preparerType);
    }
}

View on GitHub (pinned to 55bb57d202)

Solutions

  1. Correct the preparer type value in configuration to a registered key
  2. Install/register the plugin that provides the requested preparer type
  3. Check the deployment's registered providers and available keys before setting the config

Example fix

// before
config: query.preparer-type=custum-preparer
// after
config: query.preparer-type=custom-preparer
Defensive patterns

Strategy: validation

Validate before calling

if (!registeredPreparerTypes.contains(preparerType)) {
    throw new IllegalArgumentException("Unknown preparer type: " + preparerType + "; known: " + registeredPreparerTypes);
}

Type guard

boolean isRegisteredPreparer(String type) { return type != null && queryPreparerProviders.containsKey(type); }

Try / catch

try { provider = manager.getQueryPreparerProvider(type); } catch (PrestoException e) { if (e.getErrorCode().getCode() == UNSUPPORTED_ANALYZER_TYPE.toErrorCode().getCode()) { /* correct config or register provider */ } else { throw e; } }

Prevention

When it happens

Trigger: Calling getQueryPreparerProvider with a preparerType string that was never registered in the queryPreparerProviders map, e.g. due to a typo or a plugin that did not register its provider.

Common situations: Configuration property holding the preparer type misspelled; an extension/plugin missing from the deployment so its preparer type is unregistered; version change renaming a preparer type key.

Related errors


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