{"record":{"id":"6045b5ba70f36f72","repo":"risingwavelabs/risingwave","slug":"connector-is-not-supported-for-cdc-table","errorCode":null,"errorMessage":"connector {} is not supported for cdc table","messagePattern":"connector (.+?) is not supported for cdc table","errorType":"validation","errorClass":"RwError","httpStatus":null,"severity":"error","filePath":"src/frontend/src/handler/create_table.rs","lineNumber":1103,"sourceCode":"                        // Invalid format (4+ parts or empty)\n                        return Err(anyhow!(\n                            \"Invalid table name format '{}'. Expected 'schema.table' or 'database.schema.table'.\",\n                            external_table_name\n                        ).into());\n                    }\n                };\n\n                // Insert schema and table names into connector properties\n                with_options.insert(SCHEMA_NAME_KEY.into(), schema_name.into());\n                with_options.insert(TABLE_NAME_KEY.into(), table_name.into());\n\n                // Normalize external_table_name to 'schema.table' format\n                // This ensures consistency with extract_table_name() in message.rs\n                let normalized_external_table_name = format!(\"{}.{}\", schema_name, table_name);\n                return Ok((with_options, normalized_external_table_name));\n            }\n            _ => {\n                return Err(RwError::from(anyhow!(\n                    \"connector {} is not supported for cdc table\",\n                    connector\n                )));\n            }\n        };\n    }\n    unreachable!(\"All valid CDC connectors should have returned by now\")\n}\n\n/// Parse the schema/table name from the CDC `TABLE` clause.\n///\n/// Column names do not need the same parsing here: wildcard schema derivation reads\n/// them from PostgreSQL catalogs after the exact table has been identified.\nfn parse_postgres_cdc_external_table_name(external_table_name: &str) -> Result<(String, String)> {\n    let mut parts = vec![];\n    let mut current = String::new();\n    let mut chars = external_table_name.chars().peekable();\n    let mut in_quote = false;","sourceCodeStart":1085,"sourceCodeEnd":1121,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/frontend/src/handler/create_table.rs#L1085-L1121","documentation":"`derive_with_options_for_cdc_table` only rewrites options for recognized CDC connectors (e.g. mysql-cdc, postgres-cdc, sqlserver-cdc). Any other `connector` value on a CREATE TABLE that goes down the CDC derivation path is rejected with this RwError naming the offending connector string.","triggerScenarios":"CREATE TABLE ... WITH (connector = 'kafka', ...) or a misspelled connector like 'sqlservercdc' / 'mysql_cdc' reaching this match arm at create_table.rs:1103.","commonSituations":"Typo in connector name (underscore vs hyphen, missing '-cdc'); using a connector meant for CREATE SINK/CREATE CONNECTION instead of a CDC table; copy-pasted DDL from docs for a different RisingWave version.","solutions":["Fix the connector string to an exact supported value, e.g. 'mysql-cdc', 'postgres-cdc', 'sqlserver-cdc'.","For non-CDC sources (kafka, etc.) use CREATE SOURCE / CREATE SINK instead of a CDC table.","Check `SHOW CREATE` docs or the connectors page for your RisingWave version; connector names are version-sensitive.","If you intended to use a Debezium-compatible custom connector, it must still be registered as a CDC connector type in the code."],"exampleFix":"// before\nWITH (connector = 'mysql_cdc', table_name = 'db.orders')\n// after\nWITH (connector = 'mysql-cdc', table_name = 'db.orders')","handlingStrategy":"validation","validationCode":"const CDC_CONNECTORS = ['mysql-cdc', 'postgres-cdc', 'sqlserver-cdc'];\nif (!CDC_CONNECTORS.includes(opts.connector)) throw new Error(`connector ${opts.connector} not supported for cdc table`);","typeGuard":"const isCdcConnector = (c) => typeof c === 'string' && ['mysql-cdc','postgres-cdc','sqlserver-cdc'].includes(c);","tryCatchPattern":null,"preventionTips":["Keep a whitelist of valid CDC connector strings in your infra code and reference it when generating DDL.","Double-check hyphenation ('-cdc' suffix, no underscores) against your RisingWave version's docs.","Use CREATE SOURCE/SINK for non-CDC connectors instead of CREATE TABLE."],"tags":["cdc","connector","unsupported-connector","frontend"],"backgroundTag":"unsupported-operation","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}