risingwavelabs/risingwave · error · ErrorCode::NotSupported
non shared source has no fragments to describe
Error message
non shared source has no fragments to describe
What it means
`DESCRIBE FRAGMENTS` shows the streaming fragments of a shared source or streaming job. Non-shared (single-node) sources have no independently managed fragments, so the handler rejects the command and points users to plain `DESCRIBE`.
Solutions
- Use `DESCRIBE <source_name>` instead to inspect schema
- If fragment inspection is needed, recreate or configure the source as shared (`CREATE SHARED SOURCE ...` or enable shared source in config)
- Use `EXPLAIN` / `SHOW FRAGMENTS` on the relevant MV or job instead
Example fix
// before DESCRIBE FRAGMENTS my_source; // after DESCRIBE my_source;
Defensive patterns
Strategy: validation
Validate before calling
-- shared sources can be listed; only run DESCRIBE FRAGMENTS on those SELECT name FROM rw_catalog.rw_sources WHERE ...;
Try / catch
catch NotSupported with hint 'Use DESCRIBE instead of DESCRIBE FRAGMENTS' and fall back to DESCRIBE
Prevention
- Use DESCRIBE FRAGMENTS only on shared sources or streaming jobs
- Default to plain DESCRIBE when unsure of relation type
When it happens
Trigger: Running `DESCRIBE FRAGMENTS <source_name>` where `<source_name>` resolves to a source created without shared-source support (e.g. a non-shared Kafka source, or shared source disabled in config).
Common situations: Trying to inspect execution plans of a regular source; confusion between shared vs non-shared sources; older sources created before shared sources were enabled.
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
- batch refresh materialized views must not depend on sources…
- Failed to parse source definition SQL
- system table has no fragments to describe
- Time travel is not supported for the source
- view has no fragments to describe
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/3401dee27c1d9d42.
Report an issue: GitHub.
Appendix: source
Thrown at src/frontend/src/handler/describe.rs:290
pub async fn handle_describe_fragments(
handler_args: HandlerArgs,
object_name: ObjectName,
) -> Result<RwPgResponse> {
let session = handler_args.session.clone();
let job_id = {
let mut binder = Binder::new_for_system(&session);
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(),
));
}View on GitHub (pinned to 6469eb736d)