risingwavelabs/risingwave · error

ALTER TABLE SET SOURCE RATE LIMIT is not supported for…

Error message

ALTER TABLE SET SOURCE RATE LIMIT is not supported for iceberg table: {}.{}

What it means

Setting a source rate limit (`ALTER TABLE ... ALTER ... RATE LIMIT` with rate_limit_type = Source) is rejected for Iceberg-backed tables. Rate limiting applies to sources pulling from external systems; Iceberg table sources do not support this tuning knob.

Solutions

  1. Do not set source rate limits on Iceberg tables; remove the statement from the runbook.
  2. Control read throughput on the Iceberg/catalog side instead.
  3. Recreate the table/source with the desired rate limit configured at creation if the connector supports it.

Example fix

// before
ALTER TABLE iceberg_t ALTER SOURCE SET RATE LIMIT = 100;
// after
-- rate limiting unsupported for iceberg tables; omit the statement
Defensive patterns

Strategy: validation

Validate before calling

-- Skip source rate limit changes for iceberg tables
SELECT relation_kind FROM rw_catalog.rw_relations WHERE name = 't';
-- only apply rate limits to supported source types

Type guard

fn is_source_rate_limit(op: &AlterTableOperation) -> bool {
    matches!(op, AlterTableOperation::AlterRateLimit(r)
        if r.rate_limit_type == AlterRateLimitType::Source)
}

Try / catch

match client.alter_table_rate_limit(table, limit).await {
    Err(e) if e.message().contains("SET SOURCE RATE LIMIT is not supported for iceberg") => {
        // control throughput on the Iceberg/catalog side instead
    }
    other => other?,
}

Prevention

When it happens

Trigger: Executing `ALTER TABLE <iceberg_table> ALTER <col?> SET/RESET SOURCE RATE LIMIT ...` where rate_limit.rate_limit_type == Source on an Iceberg-backed table.

Common situations: Throttling ingestion from a busy source; cost-control runbooks that set source rate limits across all tables.

Related errors


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

Appendix: source

Thrown at src/frontend/src/handler/mod.rs:1797

        }
        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
            );
        }
        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)