{"record":{"id":"e1070b4de2b72b93","repo":"prestodb/presto","slug":"unsupported-analyzer-type","errorCode":"UNSUPPORTED_ANALYZER_TYPE","errorMessage":"Unsupported analyzer type: ","messagePattern":"Unsupported analyzer type: ","errorType":"error_code","errorClass":"PrestoException","httpStatus":null,"severity":"error","filePath":"presto-main-base/src/main/java/com/facebook/presto/sql/analyzer/AnalyzerProviderManager.java","lineNumber":53,"sourceCode":"        addAnalyzerProvider(analyzerProvider);\n    }\n\n    public void addAnalyzerProvider(AnalyzerProvider analyzerProvider)\n    {\n        requireNonNull(analyzerProvider, \"analyzerProvider is null\");\n\n        if (analyzerProviders.putIfAbsent(analyzerProvider.getType(), analyzerProvider) != null) {\n            throw new IllegalArgumentException(format(\"Analyzer provider '%s' is already registered\", analyzerProvider.getType()));\n        }\n    }\n\n    public AnalyzerProvider getAnalyzerProvider(String analyzerType)\n    {\n        if (analyzerProviders.containsKey(analyzerType)) {\n            return analyzerProviders.get(analyzerType);\n        }\n\n        throw new PrestoException(UNSUPPORTED_ANALYZER_TYPE, \"Unsupported analyzer type: \" + analyzerType);\n    }\n}\n","sourceCodeStart":35,"sourceCodeEnd":56,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-main-base/src/main/java/com/facebook/presto/sql/analyzer/AnalyzerProviderManager.java#L35-L56","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"// before\nAnalyzerProvider p = manager.getAnalyzerProvider(\"sqlAnalyser\");\n// after\nAnalyzerProvider p = manager.getAnalyzerProvider(\"sqlAnalyzer\");","handlingStrategy":"try-catch","validationCode":"// caller-side check against configured providers\nif (!configuredAnalyzerTypes.contains(analyzerType)) {\n    throw new IllegalArgumentException(\"Unknown analyzer type: \" + analyzerType);\n}","typeGuard":"boolean isValidAnalyzerType(String t) { return knownAnalyzerTypes.contains(t); }","tryCatchPattern":"try {\n    AnalyzerProvider p = manager.getAnalyzerProvider(type);\n} catch (PrestoException e) {\n    if (e.getErrorCode().getCode() == UNSUPPORTED_ANALYZER_TYPE.getCode()) {\n        // fall back to default analyzer or surface config error\n    } else throw e;\n}","preventionTips":["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"],"tags":["config","lookup","presto"],"backgroundTag":"unknown-config-key","analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}