{"record":{"id":"d18c020a6854129b","repo":"dbt-labs/dbt-core","slug":"databricksadapter-list-relations-schemas-by-patte","errorCode":null,"errorMessage":"DatabricksAdapter::list_relations_schemas_by_patterns","messagePattern":"DatabricksAdapter::list_relations_schemas_by_patterns","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-adapter/src/metadata/databricks/mod.rs","lineNumber":1393,"sourceCode":"            Ok(schema)\n        };\n        let reduce_f = |acc: &mut Acc,\n                        relation: Arc<dyn BaseRelation>,\n                        schema: AdapterResult<Arc<Schema>>|\n         -> Result<(), Cancellable<AdapterError>> {\n            acc.insert(relation.semantic_fqn(), schema);\n            Ok(())\n        };\n        let map_reduce = MapReduce::new(factory, Box::new(map_f), Box::new(reduce_f), unique_id);\n        map_reduce.run(Arc::new(relations.to_vec()), token)\n    }\n\n    fn list_relations_schemas_by_patterns_inner(\n        &self,\n        _patterns: &[RelationPattern],\n        _token: CancellationToken,\n    ) -> AsyncAdapterResult<'_, Vec<(String, AdapterResult<RelationSchemaPair>)>> {\n        todo!(\"DatabricksAdapter::list_relations_schemas_by_patterns\")\n    }\n\n    fn freshness_inner(\n        &self,\n        relations: &[Arc<dyn BaseRelation>],\n        token: CancellationToken,\n    ) -> AsyncAdapterResult<'_, BTreeMap<String, MetadataFreshness>> {\n        if relations.is_empty() {\n            return Box::pin(async { Ok(BTreeMap::new()) });\n        }\n\n        type Acc = BTreeMap<String, MetadataFreshness>;\n\n        let factory = Box::new(AdapterConnectionFactory::new(\n            self.adapter.engine().clone(),\n            self.adapter.engine().threads(),\n        ));\n","sourceCodeStart":1375,"sourceCodeEnd":1411,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-adapter/src/metadata/databricks/mod.rs#L1375-L1411","documentation":"Databricks' `list_relations_schemas_by_patterns_inner` is a `todo!()` placeholder; pattern-based relation/schema listing has not been implemented for DatabricksAdapter. Calling the corresponding metadata API panics with 'DatabricksAdapter::list_relations_schemas_by_patterns'.","triggerScenarios":"Invoking `list_relations_schemas_by_patterns` against a Databricks adapter, dispatching into this unimplemented inner method.","commonSituations":"A Databricks project performs a bulk relations/schema lookup by patterns (catalog refresh, relation cache warm-up) and hits the panic on first use of that API path.","solutions":["Implement the method for DatabricksAdapter, e.g., querying `information_schema.tables`/`schemata` filtered by the RelationPattern set","Use implemented per-relation metadata calls instead of the pattern-listing API until this lands","Track the missing feature upstream"],"exampleFix":"// before\nfn list_relations_schemas_by_patterns_inner(\n    &self,\n    _patterns: &[RelationPattern],\n    _token: CancellationToken,\n) -> AsyncAdapterResult<'_, Vec<(String, AdapterResult<RelationSchemaPair>)>> {\n    todo!(\"DatabricksAdapter::list_relations_schemas_by_patterns\")\n}\n// after\nfn list_relations_schemas_by_patterns_inner(\n    &self,\n    patterns: &[RelationPattern],\n    token: CancellationToken,\n) -> AsyncAdapterResult<'_, Vec<(String, AdapterResult<RelationSchemaPair>)>> {\n    self.query_information_schema_by_patterns(patterns, token)\n}","handlingStrategy":"validation","validationCode":"if adapter.name() == \"databricks\" {\n    return Err(anyhow!(\"Pattern-based relation listing is not implemented for Databricks\"));\n}","typeGuard":"fn supports_pattern_listing(adapter: &dyn Adapter) -> bool {\n    adapter.capabilities().list_relations_schemas_by_patterns\n}","tryCatchPattern":"match std::panic::catch_unwind(AssertUnwindSafe(|| adapter.list_relations_schemas_by_patterns(patterns))) {\n    Ok(res) => res,\n    Err(_) => per_relation_listing_fallback(patterns),\n}","preventionTips":["Confirm Databricks pattern-listing support before bulk metadata calls","Use information_schema queries directly for Databricks schema discovery as a fallback","Gate bulk cache warm-up flows on adapter capabilities","Track upstream Databricks metadata implementation"],"tags":["rust","todo-panic","unimplemented","databricks","metadata"],"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"}