{"record":{"id":"ad63f674ea90ccb8","repo":"risingwavelabs/risingwave","slug":"cdc-auto-schema-change-error-unsupported-data-typ","errorCode":null,"errorMessage":"CDC auto schema change error: unsupported data type `{ty}` in table `{table_name}`","messagePattern":"CDC auto schema change error: unsupported data type `(.+?)` in table `(.+?)`","errorType":"exception","errorClass":"AccessError","httpStatus":null,"severity":"error","filePath":"src/connector/codec/src/decoder/mod.rs","lineNumber":40,"sourceCode":"use thiserror::Error;\nuse thiserror_ext::Macro;\n\n#[derive(Error, Debug, Macro)]\n#[thiserror_ext(macro(mangle, path = \"crate::decoder\"))]\npub enum AccessError {\n    #[error(\"Undefined field `{name}` at `{path}`\")]\n    Undefined { name: String, path: String },\n    #[error(\"Cannot parse value `{value}` with type `{got}` into expected type `{expected}`\")]\n    TypeError {\n        expected: String,\n        got: String,\n        value: String,\n    },\n    #[error(\"Unsupported data type `{ty}`\")]\n    UnsupportedType { ty: String },\n\n    /// CDC auto schema change specific error that may include table context\n    #[error(\"CDC auto schema change error: unsupported data type `{ty}` in table `{table_name}`\")]\n    CdcAutoSchemaChangeError { ty: String, table_name: String },\n\n    #[error(\"Unsupported additional column `{name}`\")]\n    UnsupportedAdditionalColumn { name: String },\n\n    #[error(\"Fail to convert protobuf Any into jsonb: {0}\")]\n    ProtobufAnyToJson(#[source] serde_json::Error),\n\n    /// Parquet parser specific errors\n    #[error(\"Parquet parser error: {message}\")]\n    ParquetParser { message: String },\n\n    /// Errors that are not categorized into variants above.\n    #[error(\"{message}\")]\n    Uncategorized { message: String },\n\n    #[error(transparent)]\n    NotImplemented(#[from] NotImplemented),","sourceCodeStart":22,"sourceCodeEnd":58,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/codec/src/decoder/mod.rs#L22-L58","documentation":"AccessError::CdcAutoSchemaChangeError in src/connector/codec/src/decoder/mod.rs:40. Like UnsupportedType, it signals an unsupported data type, but in the CDC auto-schema-change path it additionally identifies the table `table_name` whose auto schema change failed because of type `ty`.","triggerScenarios":"During CDC (Debezium-based) ingestion with auto schema change enabled, a newly arriving event contains a column of a type `ty` that cannot be mapped, so the automatic ALTER/add-column for `table_name` aborts with this error.","commonSituations":"Upstream OLTP (MySQL/Postgres/Mongo via Debezium) added a column with a type RisingWave cannot map (e.g. geometric, array-of-custom, MONEY, enum variants); schema evolution to types unsupported by the auto-schema-change pipeline.","solutions":["Change the upstream column type to a supported one (e.g. store as TEXT/JSONB) before re-enabling auto schema change","Add the column manually in RisingWave with a supported type so the auto path is not invoked for it","Read `ty` and `table_name` from the error and extend the encoder's type mapping if you control the connector code","Check RisingWave docs/release notes for expanded CDC type support and upgrade"],"exampleFix":"-- before (Postgres source column)\nALTER TABLE src ADD COLUMN shape geometry;\n-- after\nALTER TABLE src ADD COLUMN shape_wkt TEXT; -- RW column: shape_wkt VARCHAR\n","handlingStrategy":"try-catch","validationCode":"fn cdc_type_supported(ty: &str) -> bool {\n    !matches!(ty, \"GEOMETRY\" | \"GEOGRAPHY\" | \"MONEY\" | \"UUID[]\" | \"INTERVAL\")\n}","typeGuard":null,"tryCatchPattern":"match decode_cdc_event(ev) {\n    Ok(d) => d,\n    Err(AccessError::CdcAutoSchemaChangeError { ty, table_name }) => {\n        // stop auto-schema-change for this table; add column manually with supported type\n        plan_manual_migration(&table_name, &ty)\n    }\n    Err(e) => return Err(e.into()),\n}","preventionTips":["Before altering upstream tables, verify the new column type maps to a RW type","Store unsupported types as TEXT/JSONB upstream","Monitor Debezium connector type mappings for your source DB"],"tags":["cdc","schema-change","unsupported-type"],"backgroundTag":"unsupported-dtype","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"}