{"record":{"id":"f943365c7cb51d9c","repo":"risingwavelabs/risingwave","slug":"alter-table-alter-watermark-is-not-supported-for-i","errorCode":null,"errorMessage":"ALTER TABLE ALTER WATERMARK is not supported for iceberg table: {}.{}","messagePattern":"ALTER TABLE ALTER WATERMARK is not supported for iceberg table: (.+?)\\.(.+?)","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/frontend/src/handler/mod.rs","lineNumber":1804,"sourceCode":"        }\n        AlterTableOperation::RefreshSchema => {\n            bail!(\n                \"ALTER TABLE REFRESH SCHEMA is not supported for iceberg table: {}.{}\",\n                schema_name,\n                table_name\n            );\n        }\n        AlterTableOperation::AlterRateLimit(rate_limit)\n            if rate_limit.rate_limit_type == AlterRateLimitType::Source =>\n        {\n            bail!(\n                \"ALTER TABLE SET SOURCE RATE LIMIT is not supported for iceberg table: {}.{}\",\n                schema_name,\n                table_name\n            );\n        }\n        AlterTableOperation::AlterWatermark { .. } => {\n            bail!(\n                \"ALTER TABLE ALTER WATERMARK is not supported for iceberg table: {}.{}\",\n                schema_name,\n                table_name\n            );\n        }\n        _ => {}\n    }\n    Ok(())\n}\n","sourceCodeStart":1786,"sourceCodeEnd":1814,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/frontend/src/handler/mod.rs#L1786-L1814","documentation":"Modifying a watermark definition (`ALTER TABLE ... ALTER WATERMARK`) is rejected for Iceberg-backed tables. Watermarks are part of the table's streaming definition and cannot be changed in place for Iceberg sinks.","triggerScenarios":"Executing `ALTER TABLE <iceberg_table> ALTER WATERMARK ...` (set or reset watermark) on a table backed by an Iceberg sink.","commonSituations":"Adjusting watermark delay after observing late data; generic ALTER WATERMARK scripts applied to all tables.","solutions":["Recreate the table and Iceberg sink with the desired watermark definition in the DDL and backfill.","Handle late data at the upstream source or query level instead of altering the watermark.","Skip ALTER WATERMARK statements for Iceberg tables in automation."],"exampleFix":"// before\nALTER TABLE iceberg_t ALTER WATERMARK ts_col - INTERVAL '1 minute';\n// after\n-- recreate table/sink with the new watermark clause at creation","handlingStrategy":"validation","validationCode":"-- Do not issue ALTER WATERMARK on iceberg tables\nSELECT relation_kind FROM rw_catalog.rw_relations WHERE name = 't';\n-- recreate with the desired watermark clause instead","typeGuard":"fn is_watermark_change(op: &AlterTableOperation) -> bool {\n    matches!(op, AlterTableOperation::AlterWatermark {..})\n}","tryCatchPattern":"match client.alter_table_watermark(table, wm).await {\n    Err(e) if e.message().contains(\"ALTER WATERMARK is not supported for iceberg\") => {\n        // recreate table/sink with the new watermark definition\n    }\n    other => other?,\n}","preventionTips":["Define watermarks correctly at table creation for Iceberg tables.","Exclude Iceberg tables from watermark-adjustment scripts.","Handle late data upstream rather than altering watermarks in place."],"tags":["sql","iceberg","watermark","unsupported-operation"],"backgroundTag":"operation-not-supported","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"}