{"record":{"id":"63e4bac5fca3b192","repo":"dbt-labs/dbt-core","slug":"dremio-63e4ba","errorCode":null,"errorMessage":"Dremio","messagePattern":"Dremio","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"crates/dbt-adapter/src/adapter/adapter_impl.rs","lineNumber":322,"sourceCode":"                        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,\n    ) -> FsResult<bool> {\n        match self.inner_adapter() {","sourceCodeStart":304,"sourceCodeEnd":340,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-adapter/src/adapter/adapter_impl.rs#L304-L340","documentation":"A `todo!()` panic raised when `metadata_adapter` attempts to build a metadata adapter for the Dremio adapter type. The dispatch match in crates/dbt-adapter/src/adapter/adapter_impl.rs:318-323 leaves Dremio unimplemented, so hitting that arm panics with the message \"Dremio\". It is a compile-time placeholder that becomes a runtime abort when the Dremio path is exercised.","triggerScenarios":"Calling `metadata_adapter()` on a DbtAdapter whose adapter_type() is AdapterType::Dremio in non-sidecar, non-explicit-mock mode.","commonSituations":"Running dbt with a Dremio profile against this adapter before Dremio support exists; switching profiles or CI matrices to Dremio while the metadata layer is unfinished; generic adapter-type iteration in tooling.","solutions":["Use a supported adapter type (Snowflake, Bigquery, Databricks, Redshift, Postgres, DuckDB, Fabric, ClickHouse, Exasol, etc.) until Dremio is implemented.","Implement the Dremio arm: replace `Dremio => todo!(\"Dremio\")` with a Dremio metadata adapter construction, e.g. `Box::new(DremioMetadataAdapter::new(engine)) as Box<dyn MetadataAdapter>`.","Run in sidecar mode so metadata hydration is delegated to db_runner and this match is never reached."],"exampleFix":"// before\nDremio => todo!(\"Dremio\"),\n// after\nDremio => Box::new(DremioMetadataAdapter::new(engine)) as Box<dyn MetadataAdapter>,","handlingStrategy":"validation","validationCode":"fn requires_unimplemented_arm(t: AdapterType) -> bool {\n    matches!(t, AdapterType::Starburst | AdapterType::Athena | AdapterType::Trino\n        | AdapterType::Datafusion | AdapterType::Dremio | AdapterType::Oracle)\n}\n// call before runs:\nif requires_unimplemented_arm(adapter.adapter_type()) {\n    return Err(format!(\"adapter {:?} is not yet supported\", adapter.adapter_type()).into());\n}","typeGuard":"fn is_dremio_unsupported(t: &AdapterType) -> bool {\n    matches!(t, AdapterType::Dremio)\n}","tryCatchPattern":"let result = std::panic::catch_unwind(std::panic::AssertUnwindSafe(|| adapter.metadata_adapter()));\nmatch result {\n    Err(_) => eprintln!(\"Dremio metadata adapter is not implemented; aborting gracefully\"),\n    Ok(v) => { /* proceed */ }\n}","preventionTips":["Gate Dremio profiles behind a feature flag that errors at startup.","Validate the target's adapter type against implemented engines before dispatching.","Use sidecar mode for metadata hydration when the in-process adapter is unimplemented.","Monitor repository issues for Dremio support before adopting it."],"tags":["unimplemented","todo-panic","adapter","metadata","dremio"],"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-14T16:17:12.679Z"}