{"record":{"id":"35853127f508e9fd","repo":"dbt-labs/dbt-core","slug":"trino-358531","errorCode":null,"errorMessage":"Trino","messagePattern":"Trino","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"crates/dbt-adapter/src/adapter/adapter_impl.rs","lineNumber":320,"sourceCode":"                        Postgres => Box::new(PostgresMetadataAdapter::new(engine))\n                            as Box<dyn MetadataAdapter>,\n                        DuckDB => {\n                            Box::new(DuckDBMetadataAdapter::new(engine)) as Box<dyn MetadataAdapter>\n                        }\n                        LakeCompute => {\n                            Box::new(DuckDBMetadataAdapter::new(engine)) as Box<dyn MetadataAdapter>\n                        }\n                        Fabric => {\n                            Box::new(FabricMetadataAdapter::new(engine)) as Box<dyn MetadataAdapter>\n                        }\n                        ClickHouse => Box::new(ClickHouseMetadataAdapter::new(engine))\n                            as Box<dyn MetadataAdapter>,\n                        Exasol => {\n                            Box::new(ExasolMetadataAdapter::new(engine)) as Box<dyn MetadataAdapter>\n                        }\n                        Starburst => todo!(\"Starburst\"),\n                        Athena => todo!(\"Athena\"),\n                        Trino => todo!(\"Trino\"),\n                        Datafusion => todo!(\"Datafusion\"),\n                        Dremio => todo!(\"Dremio\"),\n                        Oracle => todo!(\"Oracle\"),\n                    };\n                Some(metadata_adapter)\n            }\n        }\n    }\n\n    /// Execute `use warehouse [name]` statement for Snowflake.\n    /// For other warehouses, this is noop.\n    /// Returns whether the connection changed and must be restored.\n    pub fn use_warehouse(\n        &self,\n        conn: &'_ mut dyn Connection,\n        warehouse: String,\n        node_id: &str,\n        token: CancellationToken,","sourceCodeStart":302,"sourceCodeEnd":338,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-adapter/src/adapter/adapter_impl.rs#L302-L338","documentation":"This is a Rust `todo!()` panic: selecting a metadata adapter for the Trino adapter type is not yet implemented. The match arm in `metadata_adapter` in crates/dbt-adapter/src/adapter/adapter_impl.rs:318-323 has no adapter class for Starburst/Athena/Trino/Datafusion/Dremio/Oracle, so reaching the Trino arm aborts the process with a panic whose payload is the message \"Trino\". It signals an incomplete feature, not a runtime misconfiguration by the caller.","triggerScenarios":"Calling `metadata_adapter()` on a DbtAdapter whose adapter_type() is AdapterType::Trino in non-sidecar, non-explicit-mock mode, i.e. any run that resolves metadata hydration for a Trino-backed engine.","commonSituations":"Running dbt with a Trino profile against this Rust adapter before Trino support is wired up; enabling Trino in configuration while only Snowflake/BigQuery/Databricks/Redshift/etc. are implemented; testing adapter dispatch across all AdapterType enum variants.","solutions":["Do not use the Trino adapter type until it is implemented; switch the profile/target to a supported adapter (Snowflake, Bigquery, Databricks, Redshift, Postgres, DuckDB, Fabric, ClickHouse, Exasol, etc.).","Implement the Trino arm: create a TrinoMetadataAdapter (or reuse a compatible one) and replace `Trino => todo!(\"Trino\")` with `Box::new(TrinoMetadataAdapter::new(engine)) as Box<dyn MetadataAdapter>`.","If you only need relation/schema metadata via db_runner, run in sidecar mode (`engine.is_sidecar()`), which returns None before the match is reached."],"exampleFix":"// before\nTrino => todo!(\"Trino\"),\n// after\nTrino => Box::new(TrinoMetadataAdapter::new(engine)) as Box<dyn MetadataAdapter>,","handlingStrategy":"validation","validationCode":"fn supports_metadata_adapter(t: AdapterType) -> bool {\n    matches!(\n        t,\n        AdapterType::Snowflake | AdapterType::Bigquery | AdapterType::Databricks\n            | AdapterType::Spark | AdapterType::Redshift | AdapterType::Salesforce\n            | AdapterType::Postgres | AdapterType::DuckDB | AdapterType::LakeCompute\n            | AdapterType::Fabric | AdapterType::ClickHouse | AdapterType::Exasol\n    )\n}\n// before calling: assert!(supports_metadata_adapter(adapter.adapter_type()), \"metadata adapter not implemented for {:?}\", adapter.adapter_type());","typeGuard":"fn is_implemented_engine(t: &AdapterType) -> Option<&'static str> {\n    match t {\n        AdapterType::Snowflake => Some(\"snowflake\"),\n        AdapterType::Bigquery => Some(\"bigquery\"),\n        AdapterType::Redshift => Some(\"redshift\"),\n        AdapterType::Postgres => Some(\"postgres\"),\n        AdapterType::DuckDB => Some(\"duckdb\"),\n        _ => None,\n    }\n}","tryCatchPattern":"// Rust panics are not catchable via Result; wrap only if absolutely necessary:\nlet result = std::panic::catch_unwind(std::panic::AssertUnwindSafe(|| adapter.metadata_adapter()));\nmatch result {\n    Ok(Some(md)) => { /* use md */ }\n    Ok(None) => { /* sidecar/mock mode */ }\n    Err(_) => eprintln!(\"metadata adapter not implemented for this adapter type\"),\n}","preventionTips":["Keep a checklist of implemented AdapterType variants and validate the profile against it before launching runs.","Run in sidecar mode when using engines without a metadata adapter, so dispatch is bypassed.","Track upstream releases for Trino support before enabling Trino profiles.","In CI, fail fast on unsupported adapter types with a clear config error instead of running."],"tags":["unimplemented","todo-panic","adapter","metadata","trino"],"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"}