risingwavelabs/risingwave · error
ALTER TABLE SET PARALLELISM is not supported for iceberg tab
Error message
ALTER TABLE SET PARALLELISM is not supported for iceberg table: {}.{} What it means
Changing streaming parallelism (`ALTER TABLE ... SET PARALLELISM`) is rejected for Iceberg-backed tables. Iceberg table DDL on RisingWave does not support parallelism adjustment on the underlying streaming job.
Source
Thrown at src/frontend/src/handler/mod.rs:1774
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_name
);
}
AlterTableOperation::SetBackfillParallelism { .. } => {
bail!(
"ALTER TABLE SET BACKFILL PARALLELISM is not supported for iceberg table: {}.{}",
schema_name,
table_name
);
}
AlterTableOperation::RefreshSchema => {
bail!(
"ALTER TABLE REFRESH SCHEMA is not supported for iceberg table: {}.{}",
schema_name,
table_name
);View on GitHub (pinned to 6469eb736d)
Solutions
- Recreate the table and Iceberg sink with the desired parallelism option in the DDL.
- Tune parallelism on the Iceberg side/external compute if applicable, not via RisingWave ALTER TABLE.
- Skip the SET PARALLELISM statement for Iceberg tables in automation scripts.
Example fix
// before ALTER TABLE iceberg_t SET PARALLELISM = 8; // after -- recreate: CREATE TABLE ... WITH (parallelism = 8) plus Iceberg sink
Defensive patterns
Strategy: validation
Validate before calling
-- Skip SET PARALLELISM for iceberg-backed tables SELECT relation_kind FROM rw_catalog.rw_relations WHERE name = 't'; -- only issue SET PARALLELISM for non-iceberg tables
Type guard
fn is_parallelism_change(op: &AlterTableOperation) -> bool {
matches!(op, AlterTableOperation::SetParallelism {..})
} Try / catch
match client.alter_table_set_parallelism(table, p).await {
Err(e) if e.message().contains("SET PARALLELISM is not supported for iceberg") => {
// recreate table/sink with desired parallelism if needed
}
other => other?,
} Prevention
- Set parallelism at creation time for Iceberg tables.
- Filter parallelism-tuning automation to non-Iceberg tables.
- Capacity-plan Iceberg tables at creation to avoid later tuning.
When it happens
Trigger: Executing `ALTER TABLE <iceberg_table> SET PARALLELISM ...` where the table is backed by an Iceberg sink.
Common situations: Tuning throughput after increased load; copy-pasted parallelism tuning scripts applied to all tables including Iceberg ones.
Related errors
- ALTER TABLE SET BACKFILL PARALLELISM is not supported for ic
- 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 REFRESH SCHEMA is not supported for iceberg tabl
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/6f87dc3227df3af2.
Report an issue: GitHub.