risingwavelabs/risingwave · error · ErrorCode::NotSupported

system table has no fragments to describe

Error message

system table has no fragments to describe

What it means

In handle_describe_fragments, `DESCRIBE FRAGMENTS` was issued against a system table; system tables have no streaming fragments because they are not stream jobs, so the command fails and the user should use plain DESCRIBE instead.

Solutions

  1. Use `DESCRIBE <system_table>` to inspect its schema
  2. Run `DESCRIBE FRAGMENTS` on a materialized view, table, index, or shared source instead

Example fix

// before
DESCRIBE FRAGMENTS rw_tables;
// after
DESCRIBE rw_tables;
Defensive patterns

Strategy: validation

Validate before calling

-- system tables live in rw_catalog and never have fragments
SELECT * FROM rw_catalog.rw_tables WHERE relation = 'system_table';

Try / catch

catch NotSupported and fall back to DESCRIBE

Prevention

When it happens

Trigger: Running `DESCRIBE FRAGMENTS <system_table>` on any `rw_*` catalog/internal system table.

Common situations: Exploring `rw_catalog.rw_*` tables and assuming fragments apply; tab-completion picking a system table.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


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

Appendix: source

Thrown at src/frontend/src/handler/describe.rs:298

        Binder::validate_cross_db_reference(&session.database(), &object_name)?;
        let not_found_err = CatalogError::not_found("stream job", object_name.to_string());

        if let Ok(relation) = binder.bind_catalog_relation_by_object_name(&object_name, true) {
            match relation {
                Relation::Source(s) => {
                    if s.is_shared() {
                        s.catalog.id.as_share_source_job_id()
                    } else {
                        bail!(ErrorCode::NotSupported(
                            "non shared source has no fragments to describe".to_owned(),
                            "Use `DESCRIBE` instead of `DESCRIBE FRAGMENTS`".to_owned(),
                        ));
                    }
                }
                Relation::BaseTable(t) => t.table_catalog.id.as_job_id(),
                Relation::SystemTable(_t) => {
                    bail!(ErrorCode::NotSupported(
                        "system table has no fragments to describe".to_owned(),
                        "Use `DESCRIBE` instead of `DESCRIBE FRAGMENTS`".to_owned(),
                    ));
                }
                Relation::Share(_s) => {
                    bail!(ErrorCode::NotSupported(
                        "view has no fragments to describe".to_owned(),
                        "Use `DESCRIBE` instead of `DESCRIBE FRAGMENTS`".to_owned(),
                    ));
                }
                _ => {
                    // Other relation types (Subquery, Join, etc.) are not directly describable.
                    return Err(not_found_err.into());
                }
            }
        } else if let Ok(sink) = binder.bind_sink_by_name(object_name.clone()) {
            sink.sink_catalog.id.as_job_id()
        } else {

View on GitHub (pinned to 6469eb736d)