prestodb/presto · error · PrestoException
UNSUPPORTED_ANALYZER_TYPE
UNSUPPORTED_ANALYZER_TYPE
Error message
Unsupported analyzer type:
What it means
Thrown by AnalyzerProviderManager.getAnalyzerProvider when the requested analyzer type is not registered in the manager's map. The manager only returns providers that were previously added via addAnalyzerProvider; an unknown string key means no analyzer can be constructed. It is a configuration/lookup failure, not a data error.
Source
Thrown at presto-main-base/src/main/java/com/facebook/presto/sql/analyzer/AnalyzerProviderManager.java:53
addAnalyzerProvider(analyzerProvider);
}
public void addAnalyzerProvider(AnalyzerProvider analyzerProvider)
{
requireNonNull(analyzerProvider, "analyzerProvider is null");
if (analyzerProviders.putIfAbsent(analyzerProvider.getType(), analyzerProvider) != null) {
throw new IllegalArgumentException(format("Analyzer provider '%s' is already registered", analyzerProvider.getType()));
}
}
public AnalyzerProvider getAnalyzerProvider(String analyzerType)
{
if (analyzerProviders.containsKey(analyzerType)) {
return analyzerProviders.get(analyzerType);
}
throw new PrestoException(UNSUPPORTED_ANALYZER_TYPE, "Unsupported analyzer type: " + analyzerType);
}
}
View on GitHub (pinned to 55bb57d202)
Solutions
- Check the analyzerType string against registered providers (log or inspect analyzerProviders contents)
- Register the missing AnalyzerProvider via addAnalyzerProvider before lookup
- Ensure the plugin providing the analyzer is installed and loaded
- Fix typos or stale names in configuration files
Example fix
// before
AnalyzerProvider p = manager.getAnalyzerProvider("sqlAnalyser");
// after
AnalyzerProvider p = manager.getAnalyzerProvider("sqlAnalyzer"); Defensive patterns
Strategy: try-catch
Validate before calling
// caller-side check against configured providers
if (!configuredAnalyzerTypes.contains(analyzerType)) {
throw new IllegalArgumentException("Unknown analyzer type: " + analyzerType);
} Type guard
boolean isValidAnalyzerType(String t) { return knownAnalyzerTypes.contains(t); } Try / catch
try {
AnalyzerProvider p = manager.getAnalyzerProvider(type);
} catch (PrestoException e) {
if (e.getErrorCode().getCode() == UNSUPPORTED_ANALYZER_TYPE.getCode()) {
// fall back to default analyzer or surface config error
} else throw e;
} Prevention
- Keep the list of analyzer types in a single constants/enum class used by both registration and lookup
- Fail fast at startup by validating all configured analyzer types resolve
- Install and verify the plugin jar that registers the provider
- Add a startup self-check that calls getAnalyzerProvider for every configured type
When it happens
Trigger: Calling getAnalyzerProvider(analyzerType) with a string that was never registered via addAnalyzerProvider, e.g. a typo in the type name or a provider missing from the plugin.
Common situations: Typos in catalog/session analyzer config, a plugin jar not installed so its AnalyzerProvider never registers, or renaming an analyzer type between Presto versions while server config still references the old name.
Related errors
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/e1070b4de2b72b93.
Report an issue: GitHub.