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
- Use `DESCRIBE <system_table>` to inspect its schema
- 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
- Never run DESCRIBE FRAGMENTS on rw_* system tables
- Restrict fragment inspection to MVs, tables, indexes, and shared sources
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
- non shared source has no fragments to describe
- system table has no unaligned_join
- view has no fragments to describe
- {0}
- {0}
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)