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
- Correct the preparer type value in configuration to a registered key
- Install/register the plugin that provides the requested preparer type
- 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
- Validate preparer-type config at startup against registered keys
- Ensure the plugin providing the preparer is installed
- Grep config files for typos when renaming preparer types across versions
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.