{"record":{"id":"af84efbf43721739","repo":"dbt-labs/dbt-core","slug":"starburst-af84ef","errorCode":null,"errorMessage":"Starburst","messagePattern":"Starburst","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-adapter/src/relation/factory.rs","lineNumber":27,"sourceCode":"use minijinja::Value;\n\n/// Create a static relation value from an adapter type\n/// To be used as api.Relation in the Jinja environment\npub fn create_static_relation(\n    adapter_type: AdapterType,\n    quoting: ResolvedQuoting,\n) -> Option<Value> {\n    use AdapterType::*;\n    let result = match adapter_type {\n        Snowflake | Databricks | Spark | Fabric | DuckDB | LakeCompute | Exasol | Postgres\n        | Redshift | Salesforce | Bigquery | ClickHouse => {\n            let relation_type = RelationStatic {\n                adapter_type,\n                quoting,\n            };\n            StaticBaseRelationObject::new(Arc::new(relation_type))\n        }\n        Starburst => todo!(\"Starburst\"),\n        Athena => todo!(\"Athena\"),\n        Trino => todo!(\"Trino\"),\n        Dremio => todo!(\"Dremio\"),\n        Oracle => todo!(\"Oracle\"),\n        Datafusion => todo!(\"Datafusion\"),\n    };\n    Some(Value::from_object(result))\n}\n","sourceCodeStart":9,"sourceCodeEnd":36,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-adapter/src/relation/factory.rs#L9-L36","documentation":"This is a Rust `todo!()` panic from `create_static_relation` in crates/dbt-adapter/src/relation/factory.rs:27. The function builds a static `StaticBaseRelationObject` for adapters with a dedicated match arm, but the `Starburst` adapter type was never implemented, so reaching that arm unconditionally panics with the message 'Starburst'. It is a deliberate placeholder marking unfinished adapter support, not a runtime-detected failure.","triggerScenarios":"Calling `create_static_relation` (exposed via `get_value`, `adapter_api_value`, or the static-relation unit tests) with `adapter_type` resolving to `AdapterType::Starburst`; any dbt-jinja `api.Relation.create`-style invocation for a Starburst profile in a context that routes through the static relation factory.","commonSituations":"A developer enables a Starburst profile in their profiles.yml and runs a model whose jinja code calls the relation factory; a test author parameterizes static-relation quote-policy tests over all AdapterType variants including Starburst; an adapter matrix sweep iterating every AdapterType hits the unimplemented arm.","solutions":["Implement the `Starburst` match arm in `create_static_relation`, constructing the appropriate `RelationStatic`/`StaticBaseRelationObject` (Starburst is Trino-based, so mirror the Trino quoting/behavior)","Until implemented, guard callers: reject or fall back for `AdapterType::Starburst` before calling `create_static_relation`","Use a non-Starburst adapter type (e.g. Snowflake, BigQuery, Redshift) when exercising the static relation factory"],"exampleFix":"// before\nStarburst => todo!(\"Starburst\"),\n// after\nStarburst => {\n    let relation_type = RelationStatic { adapter_type, quoting };\n    StaticBaseRelationObject::new(Arc::new(relation_type))\n}","handlingStrategy":"validation","validationCode":"fn supports_static_relation(t: AdapterType) -> bool {\n    !matches!(t, AdapterType::Starburst)\n}\nif !supports_static_relation(adapter_type) {\n    return Err(format!(\"static relation factory does not support {adapter_type:?} yet\"));\n}","typeGuard":"fn static_relation_supported(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(|| create_static_relation(adapter_type)) {\n    Ok(v) => v,\n    Err(_) => return Err(\"create_static_relation unimplemented for this adapter\"),\n}","preventionTips":["Before routing a profile through the static relation factory, check the adapter type against the list of implemented arms in factory.rs","Prefer explicit error returns over todo!() when adding new AdapterType variants","Run the static-relation quote-policy tests with the target adapter type enabled before shipping","Track unimplemented match arms with a clippy/exhaustiveness check in CI"],"tags":["rust","panic","unimplemented","adapter","starburst"],"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"}