risingwavelabs/risingwave · error · ErrorCode::NotSupported

view has no fragments to describe

Error message

view has no fragments to describe

What it means

Raised in handle_describe_fragments when the target relation has no streaming job to show: DESC/DESCRIBE FRAGMENTS was run on a relation without fragments (e.g., a system table or a non-shared source). It signals that fragment inspection is inapplicable to this object, not an internal failure.

Solutions

  1. Use `DESCRIBE <view_name>` for schema inspection
  2. Run `DESCRIBE FRAGMENTS` on the materialized view actually backing the workload
  3. Use `EXPLAIN <query>` to see the logical plan of a view

Example fix

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

Strategy: validation

Validate before calling

-- views have no streaming job; check object type first
SELECT * FROM rw_catalog.rw_views WHERE name = 'my_view';

Try / catch

catch NotSupported and fall back to DESCRIBE or EXPLAIN

Prevention

When it happens

Trigger: Running `DESCRIBE FRAGMENTS <view_name>` on a regular SQL VIEW created via `CREATE VIEW`.

Common situations: Assuming views have an execution graph; mistyping an MV name and hitting a plain view with the same/similar name.

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/e6d61ba976c8e4a9. Report an issue: GitHub.

Appendix: source

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

                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 {
            return Err(not_found_err.into());
        }
    };

    let meta_client = session.env().meta_client();
    let fragments = &meta_client.list_table_fragments(&[job_id]).await?[&job_id];

View on GitHub (pinned to 6469eb736d)