{"record":{"id":"fa97761d06d84cec","repo":"risingwavelabs/risingwave","slug":"unsupported-additional-column-name","errorCode":null,"errorMessage":"Unsupported additional column `{name}`","messagePattern":"Unsupported additional column `(.+?)`","errorType":"exception","errorClass":"AccessError","httpStatus":null,"severity":"warning","filePath":"src/connector/codec/src/decoder/mod.rs","lineNumber":43,"sourceCode":"#[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),\n    // NOTE: We intentionally don't embed `anyhow::Error` in `AccessError` since it happens\n    // in record-level and it might be too heavy to capture the backtrace\n    // when creating a new `anyhow::Error`.","sourceCodeStart":25,"sourceCodeEnd":61,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/codec/src/decoder/mod.rs#L25-L61","documentation":"AccessError::UnsupportedAdditionalColumn in src/connector/codec/src/decoder/mod.rs:43. Thrown when a decoder encounters an additional/unexpected column `name` in the payload that is not part of the declared schema and cannot be accepted (e.g. strict decoding where extra fields are rejected).","triggerScenarios":"Decoding a record (Debezium/Protobuf/JSON path) where the payload contains a field absent from the RW schema and the access path forbids additional columns; often in CDC auto-schema-change checks deciding whether a new column can be handled.","commonSituations":"Upstream schema evolved to add a new column while RisingWave's source definition was not updated; producers including internal/envelope fields (e.g. new Debezium metadata keys) not anticipated; connect transforms adding fields (e.g. InsertField SMT).","solutions":["Update the RisingWave source/table schema to include the new column (recreate the source or rely on auto schema change)","Remove the extra field at the producer/transform layer (e.g. drop the SMT or use DropFields)","If the field is metadata, configure the connector to ignore unknown envelope fields","Check `name` in the error to identify exactly which column leaked in"],"exampleFix":"// before (Kafka Connect SMT)\n\"transforms.insertField.type\": \"org.apache.kafka.connect.transforms.InsertField$Value\"\n// after: drop the transform or drop the field before ingestion","handlingStrategy":"validation","validationCode":"fn no_extra_columns(payload_keys: &[&str], declared: &[&str]) -> Vec<String> {\n    payload_keys.iter()\n        .filter(|k| !declared.contains(k))\n        .map(|k| k.to_string())\n        .collect()\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep producer and RW schemas versioned together; update RW first when adding columns","Drop unneeded fields with downstream transforms (DropFields SMT, producer-side filtering)","Contract-test payloads against the registered schema on every producer release"],"tags":["schema-evolution","extra-column","decoder"],"backgroundTag":"schema-validation-failed","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"}