{"record":{"id":"8b2bffc8819acffe","repo":"dbt-labs/dbt-core","slug":"starburst-8b2bff","errorCode":null,"errorMessage":"Starburst","messagePattern":"Starburst","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-adapter/src/metadata/get_relation.rs","lineNumber":83,"sourceCode":"        AdapterType::Salesforce => {\n            salesforce_get_relation(adapter, state, ctx, conn, database, schema, identifier)\n        }\n        AdapterType::Spark => {\n            spark_get_relation(adapter, state, ctx, conn, schema, identifier, token)\n        }\n        AdapterType::DuckDB | AdapterType::LakeCompute => duckdb_get_relation(\n            adapter, state, ctx, conn, database, schema, identifier, token,\n        ),\n        AdapterType::Fabric => fabric_get_relation(\n            adapter, state, ctx, conn, database, schema, identifier, token,\n        ),\n        AdapterType::ClickHouse => clickhouse_get_relation(\n            adapter, state, ctx, conn, database, schema, identifier, token,\n        ),\n        AdapterType::Exasol => exasol_get_relation(\n            adapter, state, ctx, conn, database, schema, identifier, token,\n        ),\n        AdapterType::Starburst => todo!(\"Starburst\"),\n        AdapterType::Athena => todo!(\"Athena\"),\n        AdapterType::Trino => todo!(\"Trino\"),\n        AdapterType::Dremio => todo!(\"Dremio\"),\n        AdapterType::Oracle => todo!(\"Oracle\"),\n        AdapterType::Datafusion => todo!(\"Datafusion\"),\n    }\n}\n\n/// Parses an `INFORMATION_SCHEMA.ROUTINES`-shaped result batch into a\n/// [`Relation`].\npub(crate) fn relation_from_routines_batch(\n    adapter: &AdapterImpl,\n    database: &str,\n    schema: &str,\n    identifier: &str,\n    batch: &arrow::record_batch::RecordBatch,\n) -> AdapterResult<Option<Relation>> {\n    if batch.num_rows() == 0 {","sourceCodeStart":65,"sourceCodeEnd":101,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-adapter/src/metadata/get_relation.rs#L65-L101","documentation":"This is a Rust `todo!()` panic: the `get_relation` metadata dispatch in dbt-adapter has no implementation for the Starburst adapter yet, so reaching that match arm intentionally panics with the message 'Starburst'. It signals unfinished adapter work, not a runtime failure in user data. The public `get_relation` entry point routes per AdapterType and Starburst was registered as an enum variant before its metadata lookup was written.","triggerScenarios":"Calling `get_relation` (public) with an adapter whose AdapterType is Starburst; the match arm at crates/dbt-adapter/src/metadata/get_relation.rs:83 executes `todo!(\"Starburst\")` and panics.","commonSituations":"Running dbt against a Starburst/Trino-compatible warehouse before Starburst metadata support is implemented; a user or test selects the starburst adapter type and dbt resolves a relation (model, source, or seed) during compilation or execution.","solutions":["Switch to a supported adapter type (e.g. Trino once implemented, or a generic adapter) until Starburst get_relation is implemented","Implement the Starburst match arm by delegating to a Starburst-specific get_relation function modeled on the existing exasol/clickhouse implementations","Track/pin a version of dbt-adapter where Starburst metadata lookup is complete","Wrap adapter calls so unimplemented adapters are rejected at startup with a clear configuration error instead of a mid-run panic"],"exampleFix":"// before\nAdapterType::Starburst => todo!(\"Starburst\"),\n// after\nAdapterType::Starburst => starburst_get_relation(\n    adapter, state, ctx, conn, database, schema, identifier, token,\n),","handlingStrategy":"validation","validationCode":"fn supports_get_relation(t: AdapterType) -> bool {\n    !matches!(t, AdapterType::Starburst | AdapterType::Athena | AdapterType::Trino | AdapterType::Dremio | AdapterType::Oracle | AdapterType::Datafusion)\n}\nif !supports_get_relation(adapter_type) { return Err(format!(\"get_relation not implemented for {adapter_type:?}\")); }","typeGuard":"fn is_implemented(t: &AdapterType) -> bool {\n    !matches!(t, AdapterType::Starburst | AdapterType::Athena | AdapterType::Trino | AdapterType::Dremio | AdapterType::Oracle | AdapterType::Datafusion)\n}","tryCatchPattern":"match std::panic::catch_unwind(|| get_relation(...)) {\n    Ok(rel) => rel,\n    Err(_) => Err(AdapterError::NotImplemented(\"get_relation for this adapter\")),\n}","preventionTips":["Check the adapter capability matrix before selecting an adapter type in profiles.yml","Reject unimplemented adapter types at configuration load time, not mid-run","Keep a test asserting every AdapterType variant has a get_relation arm","Track todo!() arms with CI lint (e.g. deny clippy::todo or grep todo! in adapter crates)"],"tags":["rust","todo-panic","adapter","unimplemented"],"backgroundTag":"method-not-implemented","analyzedSha":"0267ce9170576975b76b64ce856b2e5848e96617","analyzedAt":"2026-09-07T21:53:39.732Z","contentChangedAt":"2026-09-07T21:53:39.732Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}