{"record":{"id":"7bb99496ff2f997b","repo":"risingwavelabs/risingwave","slug":"unsupported-sink-schema-change-op-in-iceberg-sink","errorCode":null,"errorMessage":"Unsupported sink schema change op in iceberg sink: {:?}","messagePattern":"Unsupported sink schema change op in iceberg sink: (.+?)","errorType":"exception","errorClass":"SinkError::Iceberg","httpStatus":null,"severity":"error","filePath":"src/connector/src/sink/iceberg/commit.rs","lineNumber":903,"sourceCode":"                    .collect::<Result<_>>()?;\n\n                let mut expected_after_change = original_arrow_fields;\n                expected_after_change.extend(add_arrow_fields);\n                expected_after_change\n            }\n            Some(risingwave_pb::stream_plan::sink_schema_change::Op::DropColumns(\n                drop_columns_op,\n            )) => original_arrow_fields\n                .into_iter()\n                .filter(|field| {\n                    !drop_columns_op\n                        .column_names\n                        .iter()\n                        .any(|name| name == field.name())\n                })\n                .collect_vec(),\n            _ => {\n                return Err(SinkError::Iceberg(anyhow!(\n                    \"Unsupported sink schema change op in iceberg sink: {:?}\",\n                    schema_change.op\n                )));\n            }\n        };\n\n        // If current schema equals the changed schema, then schema change is applied.\n        if schema_matches(&expected_after_change) {\n            tracing::debug!(\n                \"Current iceberg schema matches changed schema ({} columns); schema change already applied\",\n                expected_after_change.len()\n            );\n            return Ok(true);\n        }\n\n        Err(SinkError::Iceberg(anyhow!(\n            \"Current iceberg schema does not match either original_schema ({} cols) or changed schema; cannot determine whether schema change is applied\",\n            schema_change.original_schema.len()","sourceCodeStart":885,"sourceCodeEnd":921,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/sink/iceberg/commit.rs#L885-L921","documentation":"check_schema_change_applied only understands AddColumns and (in this match) a limited set of sink schema-change ops; any other SinkSchemaChange op (e.g., drop or type-change) reaches the `_` arm and is rejected. It is a guard ensuring the sink never silently ignores schema-change semantics it cannot verify.","triggerScenarios":"A downstream DDL that produced a SinkSchemaChange with an op other than AddColumns/expected variants (e.g., DROP COLUMN, ALTER TYPE) flows into an Iceberg sink whose check_schema_change_applied doesn't handle it.","commonSituations":"Running `ALTER TABLE ... DROP COLUMN` on the upstream table feeding an Iceberg sink; schema registry/source emitting incompatible schema-change ops; RisingWave version where drop-column support isn't enabled for Iceberg sinks.","solutions":["Only issue supported schema changes (add column) on upstream tables of Iceberg sinks.","If drop column is needed, recreate the sink or manually align the Iceberg table schema.","Upgrade RisingWave if a newer version supports the desired op for Iceberg sinks.","Adjust the schema-change plan generation so unsupported ops are filtered out before reaching the sink."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Restrict DDL on upstream tables to supported ops:\n// allowed: ADD COLUMN; not allowed: DROP/RENAME/ALTER TYPE on iceberg sinks","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Document and enforce which DDL ops are allowed on upstream tables of Iceberg sinks.","Review schema-change plans before dispatch to the sink.","Keep RisingWave updated for expanded schema-evolution support."],"tags":["iceberg","schema-evolution","unsupported-operation","sink"],"backgroundTag":"unsupported-operation","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"}