{"record":{"id":"81c4b948ca818b2e","repo":"risingwavelabs/risingwave","slug":"system-table-has-no-fragments-to-describe","errorCode":null,"errorMessage":"system table has no fragments to describe","messagePattern":"system table has no fragments to describe","errorType":"error_code","errorClass":"ErrorCode::NotSupported","httpStatus":null,"severity":"error","filePath":"src/frontend/src/handler/describe.rs","lineNumber":298,"sourceCode":"\n        Binder::validate_cross_db_reference(&session.database(), &object_name)?;\n        let not_found_err = CatalogError::not_found(\"stream job\", object_name.to_string());\n\n        if let Ok(relation) = binder.bind_catalog_relation_by_object_name(&object_name, true) {\n            match relation {\n                Relation::Source(s) => {\n                    if s.is_shared() {\n                        s.catalog.id.as_share_source_job_id()\n                    } else {\n                        bail!(ErrorCode::NotSupported(\n                            \"non shared source has no fragments to describe\".to_owned(),\n                            \"Use `DESCRIBE` instead of `DESCRIBE FRAGMENTS`\".to_owned(),\n                        ));\n                    }\n                }\n                Relation::BaseTable(t) => t.table_catalog.id.as_job_id(),\n                Relation::SystemTable(_t) => {\n                    bail!(ErrorCode::NotSupported(\n                        \"system table has no fragments to describe\".to_owned(),\n                        \"Use `DESCRIBE` instead of `DESCRIBE FRAGMENTS`\".to_owned(),\n                    ));\n                }\n                Relation::Share(_s) => {\n                    bail!(ErrorCode::NotSupported(\n                        \"view has no fragments to describe\".to_owned(),\n                        \"Use `DESCRIBE` instead of `DESCRIBE FRAGMENTS`\".to_owned(),\n                    ));\n                }\n                _ => {\n                    // Other relation types (Subquery, Join, etc.) are not directly describable.\n                    return Err(not_found_err.into());\n                }\n            }\n        } else if let Ok(sink) = binder.bind_sink_by_name(object_name.clone()) {\n            sink.sink_catalog.id.as_job_id()\n        } else {","sourceCodeStart":280,"sourceCodeEnd":316,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/frontend/src/handler/describe.rs#L280-L316","documentation":"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.","triggerScenarios":"Running `DESCRIBE FRAGMENTS <system_table>` on any `rw_*` catalog/internal system table.","commonSituations":"Exploring `rw_catalog.rw_*` tables and assuming fragments apply; tab-completion picking a system table.","solutions":["Use `DESCRIBE <system_table>` to inspect its schema","Run `DESCRIBE FRAGMENTS` on a materialized view, table, index, or shared source instead"],"exampleFix":"// before\nDESCRIBE FRAGMENTS rw_tables;\n// after\nDESCRIBE rw_tables;","handlingStrategy":"validation","validationCode":"-- system tables live in rw_catalog and never have fragments\nSELECT * FROM rw_catalog.rw_tables WHERE relation = 'system_table';","typeGuard":null,"tryCatchPattern":"catch NotSupported and fall back to DESCRIBE","preventionTips":["Never run DESCRIBE FRAGMENTS on rw_* system tables","Restrict fragment inspection to MVs, tables, indexes, and shared sources"],"tags":["sql","system-table","fragments"],"backgroundTag":"unsupported-operation","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}