{"record":{"id":"6bdfb7c709997339","repo":"risingwavelabs/risingwave","slug":"invalid-external-table-type","errorCode":null,"errorMessage":"invalid external table type: {:?}","messagePattern":"invalid external table type: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/connector/src/source/cdc/external/mod.rs","lineNumber":111,"sourceCode":"            Self::MySql => Ok(ExternalTableReaderImpl::MySql(\n                MySqlExternalTableReader::new(config, schema, pk_indices).await?,\n            )),\n            Self::Postgres => Ok(ExternalTableReaderImpl::Postgres(\n                PostgresExternalTableReader::new(\n                    config,\n                    schema,\n                    pk_indices,\n                    schema_table_name,\n                    table_id,\n                )\n                .await?,\n            )),\n            Self::SqlServer => Ok(ExternalTableReaderImpl::SqlServer(\n                SqlServerExternalTableReader::new(config, schema, pk_indices).await?,\n            )),\n            // citus is never supported for cdc backfill (create source + create table).\n            Self::Mock => Ok(ExternalTableReaderImpl::Mock(MockExternalTableReader::new())),\n            _ => bail!(\"invalid external table type: {:?}\", *self),\n        }\n    }\n}\n\nimpl From<ExternalCdcTableType> for PbCdcTableType {\n    fn from(cdc_table_type: ExternalCdcTableType) -> Self {\n        match cdc_table_type {\n            ExternalCdcTableType::Postgres => Self::Postgres,\n            ExternalCdcTableType::MySql => Self::Mysql,\n            ExternalCdcTableType::SqlServer => Self::Sqlserver,\n\n            ExternalCdcTableType::Citus => Self::Citus,\n            ExternalCdcTableType::Mongo => Self::Mongo,\n            ExternalCdcTableType::Undefined | ExternalCdcTableType::Mock => Self::Unspecified,\n        }\n    }\n}\n","sourceCodeStart":93,"sourceCodeEnd":129,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/source/cdc/external/mod.rs#L93-L129","documentation":"`ExternalCdcTableType::create_table_reader` only implements table readers for MySql, SqlServer, and Mock; citus is explicitly unsupported for CDC backfill. Any other variant (or citus) hits the catch-all `bail!` with this message naming the unexpected enum value. The caller is trying to initialize a parallel CDC table snapshot for a type that has no reader.","triggerScenarios":"try_init_parallel_cdc_table_snapshot_splits calls create_table_reader with an ExternalCdcTableType that is not MySql/SqlServer/Mock — typically Citus (CREATE TABLE with connector='citus-cdc') or any newly added connector variant lacking a reader arm.","commonSituations":"User attempts `CREATE TABLE ... WITH (connector = 'citus-cdc')` for CDC backfill, or a developer added a new ExternalCdcTableType variant without extending create_table_reader.","solutions":["Use a supported CDC connector for the external table: 'mysql-cdc' or 'sqlserver-cdc'.","If Citus backfill is needed, use a regular (non-CDC-backfill) approach or wait for support; citus is intentionally unsupported here.","For developers: add a match arm wiring the new table type to its reader implementation."],"exampleFix":"// before\nWITH (connector = 'citus-cdc', ...)  -- bail: invalid external table type: Citus\n// after\nWITH (connector = 'mysql-cdc', hostname = '...', port = '3306', ...)","handlingStrategy":"validation","validationCode":"let supported = [\"mysql-cdc\", \"sqlserver-cdc\"];\nif !supported.contains(&connector.as_str()) {\n    bail!(\"CDC backfill tables support only {:?}; got {}\", supported, connector);\n}","typeGuard":null,"tryCatchPattern":"match ExternalCdcTableType::try_from(connector) {\n    Ok(t @ (MySql | SqlServer)) => t.create_table_reader(...).await?,\n    other => bail!(\"connector {:?} unsupported for CDC table backfill\", other),\n}","preventionTips":["Only create external CDC tables with mysql-cdc or sqlserver-cdc.","Remember citus-cdc is never supported for create-table CDC backfill.","When adding a new ExternalCdcTableType variant, extend create_table_reader in the same PR."],"tags":["cdc","external-table","unsupported-connector"],"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-23T08:17:48.524Z"}