{"record":{"id":"89b511d92e12df59","repo":"dbt-labs/dbt-core","slug":"grants-not-implemented","errorCode":null,"errorMessage":"grants not implemented","messagePattern":"grants not implemented","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-adapter/src/adapter/adapter_impl.rs","lineNumber":3138,"sourceCode":"                let object_type_cols = record_batch.column_values::<StringArray>(\"ObjectType\")?;\n\n                let mut result = IndexMap::new();\n                for i in 0..record_batch.num_rows() {\n                    let privilege = privilege_cols.value(i);\n                    let grantee = grantee_cols.value(i);\n                    let object_type = object_type_cols.value(i);\n\n                    if object_type == \"TABLE\" && privilege != \"OWN\" {\n                        let list = result.entry(privilege.to_string()).or_insert_with(Vec::new);\n                        list.push(grantee.to_string());\n                    }\n                }\n\n                Ok(result)\n            }\n            Salesforce | Spark | Fabric | ClickHouse | Starburst | Athena | Trino | Datafusion\n            | Dremio | Oracle => {\n                unimplemented!(\"grants not implemented\")\n            }\n        }\n    }\n\n    /// Join `SHOW TABLES FROM SCHEMA` metadata with `SVV_REDSHIFT_COLUMNS` to build the base\n    /// catalog used when Redshift datasharing is enabled. The SVV view is leader-only and\n    /// cannot be joined to `SHOW` results in SQL, so the catalog macro fetches both and passes\n    /// them here for an in-memory join.\n    pub fn build_catalog_from_show_tables_and_svv_columns(\n        &self,\n        show_tables_results: &[Arc<AgateTable>],\n        svv_columns: Arc<AgateTable>,\n    ) -> AdapterResult<AgateTable> {\n        match self.adapter_type() {\n            Redshift => {\n                let show_tables_batches: Vec<Arc<RecordBatch>> = show_tables_results\n                    .iter()\n                    .map(|table| table.original_record_batch())","sourceCodeStart":3120,"sourceCodeEnd":3156,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-adapter/src/adapter/adapter_impl.rs#L3120-L3156","documentation":"standardize_grants_dict panics for adapters with no grants normalization branch (Salesforce, Spark, Fabric, ClickHouse, Starburst, Athena, Trino, Datafusion, Dremio, Oracle). The method converts a raw `SHOW GRANTS` result into dbt's normalized grant dict; the Rust port only implements per-dialect parsing for the other adapters.","triggerScenarios":"Grant normalization during `on-commit` grant application or `dbt` grant auditing on the listed adapters; currently also reachable from unit tests (test_redshift_standardize_grants_dict_legacy etc. exercise other branches).","commonSituations":"Configuring `grants:` on models/snapshots with any of the listed adapters in the Rust engine.","solutions":["Remove `grants:` config from models using these adapters.","Run grant-bearing models on an adapter with implemented grant parsing (Redshift, Snowflake, Databricks, Postgres, BigQuery, etc.).","Implement a grants dict normalizer for the missing dialects in adapter_impl.rs (~line 3138)."],"exampleFix":"// before\nSalesforce | Spark | Fabric | ClickHouse | ... | Oracle => {\n    unimplemented!(\"grants not implemented\")\n}\n// after\nSalesforce | Spark | Fabric | ClickHouse | ... | Oracle => {\n    Err(AdapterError::NotImplemented(\"grants\".into()))\n}","handlingStrategy":"validation","validationCode":"if config.grants.is_some() && [\"salesforce\",\"spark\",\"fabric\",\"clickhouse\",\"starburst\",\"athena\",\"trino\",\"datafusion\",\"dremio\",\"oracle\"].contains(&adapter_type.as_str()) {\n    return Err(\"grants not implemented for this adapter\".into());\n}","typeGuard":"fn supports_grants(adapter_type: &AdapterType) -> bool {\n    !matches!(adapter_type, AdapterType::Salesforce | AdapterType::Spark | AdapterType::Fabric | AdapterType::ClickHouse | AdapterType::Starburst | AdapterType::Athena | AdapterType::Trino | AdapterType::Datafusion | AdapterType::Dremio | AdapterType::Oracle)\n}","tryCatchPattern":null,"preventionTips":["Do not set `grants:` in model configs on unported adapters","Manage ACLs with external tooling (Terraform, SQL scripts) for those dialects","Add CI validation that rejects grants config with unsupported adapters"],"tags":["rust","adapter","grants","acl","unimplemented"],"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-17T15:17:12.973Z"}