{"record":{"id":"4208a983866477f7","repo":"prestodb/presto","slug":"unsupported-analyzer-type-4208a9","errorCode":"UNSUPPORTED_ANALYZER_TYPE","errorMessage":"Unsupported query preparer type: ","messagePattern":"Unsupported query preparer type: ","errorType":"error_code","errorClass":"PrestoException","httpStatus":null,"severity":"error","filePath":"presto-main-base/src/main/java/com/facebook/presto/sql/analyzer/QueryPreparerProviderManager.java","lineNumber":52,"sourceCode":"        addQueryPreparerProvider(queryPreparerProvider);\n    }\n\n    public void addQueryPreparerProvider(QueryPreparerProvider preparerProvider)\n    {\n        requireNonNull(preparerProvider, \"preparerProvider is null\");\n\n        if (queryPreparerProviders.putIfAbsent(preparerProvider.getType(), preparerProvider) != null) {\n            throw new IllegalArgumentException(format(\"Query preparer provider '%s' is already registered\", preparerProvider.getType()));\n        }\n    }\n\n    public QueryPreparerProvider getQueryPreparerProvider(String preparerType)\n    {\n        if (queryPreparerProviders.containsKey(preparerType)) {\n            return queryPreparerProviders.get(preparerType);\n        }\n\n        throw new PrestoException(UNSUPPORTED_ANALYZER_TYPE, \"Unsupported query preparer type: \" + preparerType);\n    }\n}\n","sourceCodeStart":34,"sourceCodeEnd":55,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-main-base/src/main/java/com/facebook/presto/sql/analyzer/QueryPreparerProviderManager.java#L34-L55","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"// before\nconfig: query.preparer-type=custum-preparer\n// after\nconfig: query.preparer-type=custom-preparer","handlingStrategy":"validation","validationCode":"if (!registeredPreparerTypes.contains(preparerType)) {\n    throw new IllegalArgumentException(\"Unknown preparer type: \" + preparerType + \"; known: \" + registeredPreparerTypes);\n}","typeGuard":"boolean isRegisteredPreparer(String type) { return type != null && queryPreparerProviders.containsKey(type); }","tryCatchPattern":"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; } }","preventionTips":["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"],"tags":["presto","configuration","not-supported","analyzer"],"backgroundTag":"unsupported-config-value","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"}