risingwavelabs/risingwave · error
ALTER TABLE {} is not supported for iceberg table: {}.{}. Ex
Error message
ALTER TABLE {} is not supported for iceberg table: {}.{}. Existing column schema mutation is not supported currently What it means
Mutating an existing column's definition (RENAME COLUMN, CHANGE COLUMN, ALTER COLUMN) on an Iceberg table is rejected unconditionally. Iceberg connector schema evolution in RisingWave only supports additive changes (add/drop via an auto-refresh-schema sink); in-place column mutation is not implemented.
Source
Thrown at src/frontend/src/handler/mod.rs:1759
schema_name,
table_name
);
}
}
AlterTableOperation::DropColumn { .. } => {
if !has_auto_refresh_schema_sink {
bail!(
"ALTER TABLE {} is not supported for iceberg table without auto schema change sink: {}.{}",
operation,
schema_name,
table_name
);
}
}
AlterTableOperation::RenameColumn { .. }
| AlterTableOperation::ChangeColumn { .. }
| AlterTableOperation::AlterColumn { .. } => {
bail!(
"ALTER TABLE {} is not supported for iceberg table: {}.{}. Existing column schema mutation is not supported currently",
operation,
schema_name,
table_name
);
}
AlterTableOperation::RenameTable { .. } => {
bail!(
"ALTER TABLE RENAME is not supported for iceberg table: {}.{}",
schema_name,
table_name
);
}
AlterTableOperation::SetParallelism { .. } => {
bail!(
"ALTER TABLE SET PARALLELISM is not supported for iceberg table: {}.{}",
schema_name,
table_nameView on GitHub (pinned to 6469eb736d)
Solutions
- Add a new column with the desired name/type (via ADD COLUMN with an auto-refresh-schema sink), backfill it, then DROP the old column.
- Perform the rename/type change directly on the Iceberg side and refresh the RisingWave schema with REFRESH SCHEMA where applicable.
- Drop and recreate the table and sink with the corrected schema if feasible.
Example fix
// before ALTER TABLE t RENAME COLUMN a TO b; // after ALTER TABLE t ADD COLUMN b <type>; -- backfill b from a, then ALTER TABLE t DROP COLUMN a;
Defensive patterns
Strategy: validation
Validate before calling
-- Never issue RENAME/CHANGE/ALTER COLUMN on iceberg tables SELECT relation_kind FROM rw_catalog.rw_relations WHERE name = 't'; -- if iceberg-backed, use add-new + backfill + drop-old instead
Type guard
fn is_column_mutation(op: &AlterTableOperation) -> bool {
matches!(op,
AlterTableOperation::RenameColumn {..}
| AlterTableOperation::ChangeColumn {..}
| AlterTableOperation::AlterColumn {..})
} Try / catch
match client.alter_table(op).await {
Err(e) if e.message().contains("Existing column schema mutation is not supported") => {
// fall back to add-new-column + drop-old workflow
}
other => other?,
} Prevention
- Treat existing-column mutation as unsupported for all Iceberg tables.
- Adopt the add-new/backfill/drop-old pattern for renames and type changes.
- Document this limitation in schema-migration runbooks.
When it happens
Trigger: Executing `ALTER TABLE <iceberg_table> RENAME COLUMN ...`, `CHANGE COLUMN ...`, or `ALTER COLUMN ...` on any Iceberg-backed table, regardless of sink settings.
Common situations: Renaming a misnamed column or widening its type on an Iceberg table; porting Postgres ALTER TABLE habits to Iceberg-backed tables.
Related errors
- ALTER TABLE {} is not supported for iceberg table without au
- ALTER TABLE REFRESH SCHEMA is not supported for iceberg tabl
- 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/4d9697ca92e1a575.
Report an issue: GitHub.