{"record":{"id":"55333d3820f73e64","repo":"risingwavelabs/risingwave","slug":"connector-is-not-supported-55333d","errorCode":null,"errorMessage":"connector '{}' is not supported","messagePattern":"connector '(.+?)' is not supported","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/connector/src/source/base.rs","lineNumber":679,"sourceCode":"    /// `deny_unknown_fields`: Since `WITH` options are persisted in meta, we do not deny unknown fields when restoring from\n    /// existing data to avoid breaking backwards compatibility. We only deny unknown fields when creating new sources.\n    pub fn extract(\n        with_properties: WithOptionsSecResolved,\n        deny_unknown_fields: bool,\n    ) -> Result<Self> {\n        let (options, secret_refs) = with_properties.into_parts();\n        let mut options_with_secret =\n            LocalSecretManager::global().fill_secrets(options, secret_refs)?;\n        let connector = options_with_secret\n            .remove(UPSTREAM_SOURCE_KEY)\n            .ok_or_else(|| anyhow!(\"Must specify 'connector' in WITH clause\"))?\n            .to_lowercase();\n        match_source_name_str!(\n            connector.as_str(),\n            PropType,\n            PropType::try_from_btreemap(options_with_secret, deny_unknown_fields)\n                .map(ConnectorProperties::from),\n            |other| bail!(\"connector '{}' is not supported\", other)\n        )\n    }\n\n    pub fn enforce_secret_source(\n        with_properties: &impl WithPropertiesExt,\n    ) -> crate::error::ConnectorResult<()> {\n        let connector = with_properties\n            .get_connector()\n            .ok_or_else(|| anyhow!(\"Must specify 'connector' in WITH clause\"))?\n            .to_lowercase();\n        let key_iter = with_properties.key_iter();\n        match_source_name_str!(\n            connector.as_str(),\n            PropType,\n            PropType::enforce_secret(key_iter),\n            |other| bail!(\"connector '{}' is not supported\", other)\n        )\n    }","sourceCodeStart":661,"sourceCodeEnd":697,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/source/base.rs#L661-L697","documentation":"After the `connector` key is found, ConnectorProperties::extract dispatches through match_source_name_str! to the connector's PropType parser. If the lowercased connector name matches no known connector, this bail fires with the offending name.","triggerScenarios":"Passing an unrecognized connector name, e.g. WITH (connector='rediss') or connector='kafk', or a connector removed/renamed in the running RisingWave version.","commonSituations":"Typos in connector name; relying on a third-party/renamed connector; older SQL scripts referencing a deprecated connector name.","solutions":["Use a supported connector name (kafka, kinesis, pulsar, s3, datagen, nats, opensearch, etc.) — names are case-insensitive but must match the registry","Run SHOW CREATE / check docs for the list of supported connectors in your RisingWave version","Add match arms for the new connector in match_source_name_str! if extending the codebase"],"exampleFix":"// before\nWITH (connector='eventhubs', ...)\n// after\nWITH (connector='kafka', ...)","handlingStrategy":"validation","validationCode":"const SUPPORTED: &[&str] = &[\"kafka\",\"kinesis\",\"pulsar\",\"s3\",\"datagen\",\"nats\",\"opensearch\",\"cdc\"];\nassert!(SUPPORTED.contains(&connector_name.to_lowercase().as_str()));","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Verify connector names against the RisingWave docs/registry for your version","Names are lowercased before matching — avoid relying on unusual casing","Watch release notes for connector renames/removals"],"tags":["rust","connector","sql","unknown-value"],"backgroundTag":"unsupported-enum-value","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}