risingwavelabs/risingwave · error
ALTER TABLE ALTER WATERMARK is not supported for iceberg tab
Error message
ALTER TABLE ALTER WATERMARK is not supported for iceberg table: {}.{} What it means
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.
Source
Thrown at src/frontend/src/handler/mod.rs:1804
}
AlterTableOperation::RefreshSchema => {
bail!(
"ALTER TABLE REFRESH SCHEMA is not supported for iceberg table: {}.{}",
schema_name,
table_name
);
}
AlterTableOperation::AlterRateLimit(rate_limit)
if rate_limit.rate_limit_type == AlterRateLimitType::Source =>
{
bail!(
"ALTER TABLE SET SOURCE RATE LIMIT is not supported for iceberg table: {}.{}",
schema_name,
table_name
);
}
AlterTableOperation::AlterWatermark { .. } => {
bail!(
"ALTER TABLE ALTER WATERMARK is not supported for iceberg table: {}.{}",
schema_name,
table_name
);
}
_ => {}
}
Ok(())
}
View on GitHub (pinned to 6469eb736d)
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.
Example fix
// before ALTER TABLE iceberg_t ALTER WATERMARK ts_col - INTERVAL '1 minute'; // after -- recreate table/sink with the new watermark clause at creation
Defensive patterns
Strategy: validation
Validate before calling
-- Do not issue ALTER WATERMARK on iceberg tables SELECT relation_kind FROM rw_catalog.rw_relations WHERE name = 't'; -- recreate with the desired watermark clause instead
Type guard
fn is_watermark_change(op: &AlterTableOperation) -> bool {
matches!(op, AlterTableOperation::AlterWatermark {..})
} Try / catch
match client.alter_table_watermark(table, wm).await {
Err(e) if e.message().contains("ALTER WATERMARK is not supported for iceberg") => {
// recreate table/sink with the new watermark definition
}
other => other?,
} Prevention
- 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.
When it happens
Trigger: Executing `ALTER TABLE <iceberg_table> ALTER WATERMARK ...` (set or reset watermark) on a table backed by an Iceberg sink.
Common situations: Adjusting watermark delay after observing late data; generic ALTER WATERMARK scripts applied to all tables.
Related errors
- ALTER TABLE {} is not supported for iceberg table without au
- ALTER TABLE {} is not supported for iceberg table: {}.{}. Ex
- ALTER TABLE RENAME is not supported for iceberg table: {}.{}
- ALTER TABLE SET PARALLELISM is not supported for iceberg tab
- ALTER TABLE SET BACKFILL PARALLELISM is not supported for ic
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/f943365c7cb51d9c.
Report an issue: GitHub.