{"record":{"id":"54d839dbff6a74a0","repo":"dbt-labs/dbt-core","slug":"only-available-for-databricks","errorCode":null,"errorMessage":"Only available for Databricks","messagePattern":"Only available for Databricks","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-adapter/src/column/types.rs","lineNumber":313,"sourceCode":"        &self,\n        name: &str,\n        raw_data_type: &str,\n    ) -> Result<Column, minijinja::Error> {\n        // TODO(serramatutu): why is this Snowflake specific in non-Snowflake specific trait?\n        // It seems like it is used by other adapters as well... (tested with BigQuery)\n        let mut col = Column::try_from_snowflake_raw_data_type(name, raw_data_type)\n            .map_err(|msg| minijinja::Error::new(minijinja::ErrorKind::InvalidArgument, msg))?;\n        col._adapter_type = self.0;\n        Ok(col)\n    }\n\n    /// https://github.com/databricks/dbt-databricks/blob/822b105b15e644676d9e1f47cbfd765cd4c1541f/dbt/adapters/databricks/column.py#L66\n    fn dbx_format_add_column_list(\n        self: &Arc<Self>,\n        columns: &[Column],\n    ) -> Result<String, minijinja::Error> {\n        if self.0 != AdapterType::Databricks {\n            unimplemented!(\"Only available for Databricks\")\n        };\n\n        Ok(columns\n            .iter()\n            .map(|c| format!(\"{} {}\", c.quoted(), c.core_dtype))\n            .collect::<Vec<String>>()\n            .join(\", \"))\n    }\n\n    /// https://github.com/databricks/dbt-databricks/blob/822b105b15e644676d9e1f47cbfd765cd4c1541f/dbt/adapters/databricks/column.py#L62\n    fn dbx_format_remove_column_list(\n        self: &Arc<Self>,\n        columns: &[Column],\n    ) -> Result<String, minijinja::Error> {\n        if self.0 != AdapterType::Databricks {\n            unimplemented!(\"Only available for Databricks\")\n        };\n","sourceCodeStart":295,"sourceCodeEnd":331,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-adapter/src/column/types.rs#L295-L331","documentation":"`dbx_format_add_column_list` formats a column list for ALTER TABLE ... ADD COLUMNS using Databricks-specific syntax, mirroring dbt-databricks' column.py; it panics with `unimplemented!` when the receiver's adapter type is not Databricks. The guard `if self.0 != AdapterType::Databricks` runs before any formatting, so non-Databricks adapters always abort. It exists to make cross-adapter misuse loud rather than silently produce wrong DDL.","triggerScenarios":"Calling `dbx_format_add_column_list(columns)` on a Column/type wrapper whose inner AdapterType is not Databricks — e.g. invoking the Databricks column-list formatter while running on Snowflake, Postgres, or BigQuery.","commonSituations":"Schema-change/append-column macros that dispatch on column methods but reach the Databricks-only formatter on another warehouse; shared models copied from a Databricks project; missing adapter-type dispatch in custom materializations that alter columns.","solutions":["Dispatch to a platform-appropriate column-list formatter for non-Databricks adapters instead of calling dbx_format_add_column_list.","Add an adapter-type guard before invoking the Databricks-specific formatter.","Verify the materialization invoking this helper is only selected on the Databricks target."],"exampleFix":"// before\nlet col_list = columns.dbx_format_add_column_list();\n// after\nlet col_list = if adapter_type == AdapterType::Databricks {\n    columns.dbx_format_add_column_list()\n} else {\n    format_standard_add_column_list(columns)\n};","handlingStrategy":"type-guard","validationCode":"// Rust\nif self.0 != AdapterType::Databricks {\n    // do not call dbx_format_add_column_list\n}","typeGuard":"fn is_databricks_column(c: &ColumnWrapper) -> bool {\n    c.0 == AdapterType::Databricks\n}","tryCatchPattern":"// Dispatch by adapter type before formatting\nlet ddl_cols = if is_databricks_column(&columns) {\n    columns.dbx_format_add_column_list(&cols)?\n} else {\n    standard_format_add_column_list(&cols)\n};","preventionTips":["Route column DDL formatting through adapter-dispatched macros","Only invoke dbx_ prefixed helpers on Databricks","Test schema-change materializations on every supported target"],"tags":["unimplemented","databricks","columns","adapter"],"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"}