{"record":{"id":"24d2694f056e3772","repo":"risingwavelabs/risingwave","slug":"unknown-source-connector-connector-name","errorCode":null,"errorMessage":"Unknown source connector: {connector_name}","messagePattern":"Unknown source connector: (.+?)","errorType":"validation","errorClass":"ConnectorError","httpStatus":null,"severity":"error","filePath":"src/connector/src/allow_alter_on_fly_fields.rs","lineNumber":468,"sourceCode":"/// Get all sink connector names that have `allow_alter_on_fly` fields\npub fn get_sink_connectors_with_allow_alter_on_fly_fields() -> Vec<&'static str> {\n    SINK_ALLOW_ALTER_ON_FLY_FIELDS.keys().map(|s| s.as_str()).collect()\n}\n\n/// Get all connection names that have `allow_alter_on_fly` fields\npub fn get_connection_names_with_allow_alter_on_fly_fields() -> Vec<&'static str> {\n    CONNECTION_ALLOW_ALTER_ON_FLY_FIELDS.keys().map(|s| s.as_str()).collect()\n}\n\n/// Checks if all given fields are allowed to be altered on the fly for the specified source connector.\n/// Returns Ok(()) if all fields are allowed, otherwise returns a `ConnectorError`.\npub fn check_source_allow_alter_on_fly_fields(\n    connector_name: &str,\n    fields: &[String],\n) -> crate::error::ConnectorResult<()> {\n    // Convert connector name to the type name key\n    let Some(type_name) = source_properties::source_name_to_prop_type_name(connector_name) else {\n        return Err(ConnectorError::from(anyhow::anyhow!(\n            \"Unknown source connector: {connector_name}\"\n        )));\n    };\n    let Some(allowed_fields) = SOURCE_ALLOW_ALTER_ON_FLY_FIELDS.get(type_name) else {\n    return Err(ConnectorError::from(anyhow::anyhow!(\n        \"No allow_alter_on_fly fields registered for connector: {connector_name}\"\n    )));\n    };\n    for field in fields {\n        if !allowed_fields.contains(field) {\n            return Err(ConnectorError::from(anyhow::anyhow!(\n                \"Field '{field}' is not allowed to be altered on the fly for connector: {connector_name}\"\n            )));\n        }\n    }\n    Ok(())\n}\n","sourceCodeStart":450,"sourceCodeEnd":486,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/allow_alter_on_fly_fields.rs#L450-L486","documentation":"check_source_allow_alter_on_fly_fields could not map the given connector_name to a registered source type name, so there is no allow_alter_on_fly allowlist for it. This indicates the connector name is misspelled or unsupported for on-the-fly field alteration.","triggerScenarios":"Calling ALTER SOURCE ... to alter fields on the fly where the source's connector option value is not a recognized connector (typo, custom/external connector not compiled in, or removed connector).","commonSituations":"Typo in WITH connector='kafk' instead of 'kafka'; using an enterprise/unregistered connector; renaming connector keys after a version upgrade.","solutions":["Check the connector option value in the source's WITH clause and correct the spelling","List supported connectors for your RW version and use an exact match","If using a custom connector build, ensure it registers its allow-alter-on-fly fields"],"exampleFix":"// before\nCREATE SOURCE s WITH (connector = 'kafak', ...);\n// after\nCREATE SOURCE s WITH (connector = 'kafka', ...);","handlingStrategy":"validation","validationCode":"const KNOWN: &[&str] = &[\"kafka\",\"kinesis\",\"nexmark\",\"datagen\",\"pulsar\",\"debezium\",\"snowflake\" /*...*/];\nfn ensure_known(connector: &str) -> Result<(), String> {\n    if KNOWN.contains(&connector) { Ok(()) } else { Err(format!(\"unknown connector: {connector}\")) }\n}","typeGuard":null,"tryCatchPattern":"match check_source_allow_alter_on_fly_fields(name, fields) {\n    Err(e) if e.to_string().starts_with(\"Unknown source connector\") => {\n        // surface a friendly \"check connector spelling\" message\n    }\n    other => other?,\n}","preventionTips":["Keep connector names in constants/enums instead of ad-hoc strings","Validate WITH options against docs before running ALTER","After RW upgrades, re-check connector name lists for renames"],"tags":["connector","configuration","validation"],"backgroundTag":"invalid-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"}