{"record":{"id":"269b7f35db7e3a81","repo":"dbt-labs/dbt-core","slug":"salesforceadapter-does-not-implement-build-schemas","errorCode":null,"errorMessage":"SalesforceAdapter does not implement build_schemas_from_stats_sql","messagePattern":"SalesforceAdapter does not implement build_schemas_from_stats_sql","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-adapter/src/metadata/salesforce/mod.rs","lineNumber":34,"sourceCode":"}\n\nimpl SalesforceMetadataAdapter {\n    pub fn new(engine: Arc<dyn AdapterEngine>) -> Self {\n        let _adapter = AdapterImpl::new(engine, None);\n        Self { /* adapter */ }\n    }\n}\n\nimpl MetadataAdapter for SalesforceMetadataAdapter {\n    fn adapter_type(&self) -> AdapterType {\n        AdapterType::Salesforce\n    }\n\n    fn build_schemas_from_stats_sql(\n        &self,\n        _: Arc<RecordBatch>,\n    ) -> AdapterResult<BTreeMap<String, dbt_schemas::schemas::legacy_catalog::CatalogTable>> {\n        unimplemented!(\"SalesforceAdapter does not implement build_schemas_from_stats_sql\");\n    }\n\n    fn build_columns_from_get_columns(\n        &self,\n        _: Arc<RecordBatch>,\n    ) -> AdapterResult<\n        BTreeMap<String, BTreeMap<String, dbt_schemas::schemas::legacy_catalog::ColumnMetadata>>,\n    > {\n        unimplemented!(\"SalesforceAdapter does not implement build_columns_from_get_columns\");\n    }\n\n    fn list_user_defined_functions_inner(\n        &self,\n        _catalog_schemas: &BTreeMap<String, BTreeSet<String>>,\n        _token: CancellationToken,\n    ) -> AsyncAdapterResult<'_, Vec<UDF>> {\n        let future = std::future::ready(Ok(Default::default()));\n        Box::pin(future)","sourceCodeStart":16,"sourceCodeEnd":52,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-adapter/src/metadata/salesforce/mod.rs#L16-L52","documentation":"build_schemas_from_stats_sql assembles CatalogTable entries from a RecordBatch returned by the stats SQL query. The Salesforce adapter does not support catalog stats collection, so this trait method is stubbed with unimplemented!() — calling it always panics. It signals that Salesforce cannot participate in the docs/catalog generation pipeline that relies on stats SQL.","triggerScenarios":"Running catalog/docs generation (dbt docs generate) or any metadata pipeline that calls SalesforceAdapter::build_schemas_from_stats_sql, since the Salesforce adapter never implements stats-based schema building.","commonSituations":"Running 'dbt docs generate' against a Salesforce adapter profile; tooling that harvests catalog metadata from all configured adapters including Salesforce; automation that assumes every adapter supports the stats SQL catalog path.","solutions":["Skip catalog/stats generation for Salesforce adapter targets (exclude it from docs generate runs).","Use the Salesforce adapter's supported metadata path (build_columns_from_get_columns-style describe calls) or a different discovery mechanism.","If catalog support is required, implement build_schemas_from_stats_sql for SalesforceAdapter or raise an AdapterResult error instead of panicking."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"if adapter.type() == \"salesforce\" { skip_catalog_stats_generation(); }","typeGuard":"fn supports_catalog_stats(t: &AdapterType) -> bool { *t != AdapterType::Salesforce }","tryCatchPattern":"// Rust callers of the trait should not catch the panic; filter adapters beforehand:\nif adapter.adapter_type() != AdapterType::Salesforce {\n    let tables = adapter.build_schemas_from_stats_sql(batch)?;\n}","preventionTips":["Exclude Salesforce targets from 'dbt docs generate' / catalog runs.","Check adapter capabilities before invoking stats-based metadata collection.","Track adapter feature matrices when building multi-adapter tooling."],"tags":["unimplemented","salesforce","catalog","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"}