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

  1. Recreate the table and Iceberg sink with the desired parallelism option in the DDL.
  2. Tune parallelism on the Iceberg side/external compute if applicable, not via RisingWave ALTER TABLE.
  3. 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

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


AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11). Data as JSON: /api/errors/6f87dc3227df3af2. Report an issue: GitHub.