{"record":{"id":"715a25cd646c8146","repo":"dbt-labs/dbt-core","slug":"unknown-method-on-columnstatic-name","errorCode":null,"errorMessage":"Unknown method on ColumnStatic: '{name}'","messagePattern":"Unknown method on ColumnStatic: '(.+?)'","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-adapter/src/column/types.rs","lineNumber":111,"sourceCode":"                let columns = args.get::<Value>(\"columns\")?;\n                let columns = Column::vec_from_jinja_value(AdapterType::Databricks, columns)?;\n\n                Ok(Value::from(self.dbx_format_remove_column_list(&columns)?))\n            }\n            \"get_name\" => {\n                let mut args: ArgParser = ArgParser::new(args, None);\n                let column = args.get::<Value>(\"column\")?;\n                // FIXME: why is this DbtColumn and not Column?\n                let column = minijinja_value_to_typed_struct::<DbtColumn>(column).map_err(|e| {\n                    minijinja::Error::new(\n                        minijinja::ErrorKind::SerdeDeserializeError,\n                        e.to_string(),\n                    )\n                })?;\n\n                Ok(Value::from(self.dbx_get_name(&column)))\n            }\n            _ => Err(minijinja::Error::new(\n                minijinja::ErrorKind::UnknownMethod,\n                format!(\"Unknown method on ColumnStatic: '{name}'\"),\n            )),\n        }\n    }\n\n    fn call(\n        self: &Arc<Self>,\n        _state: &minijinja::State,\n        args: &[Value],\n        _listeners: &[std::rc::Rc<dyn minijinja::listener::RenderingEventListener>],\n    ) -> Result<Value, minijinja::Error> {\n        self.jinja_create(args)\n    }\n}\n\nimpl ColumnStatic {\n    pub fn new(adapter_type: AdapterType) -> Self {","sourceCodeStart":93,"sourceCodeEnd":129,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-adapter/src/column/types.rs#L93-L129","documentation":"The ColumnStatic Jinja object exposes a fixed set of methods (create, translate_type, numeric_type, string_type, from_description, format_add_column_list, format_remove_column_list, get_name). Calling any other attribute-as-method on it raises minijinja UnknownMethod. This is the library's way of saying the requested method does not exist on the Column class for the current adapter.","triggerScenarios":"Any Jinja expression like `Column.some_method(...)` where `some_method` is not one of the eight implemented method names — typically typos, Python-adapter methods ported from dbt Core that were never implemented (e.g. `Column.text_type`, `Column.is_string`), or calling an adapter-specific method while running under a different adapter.","commonSituations":"Porting a Python dbt adapter macro to the Rust engine and referencing methods that exist in dbt-adapters Python but not here; typos like `column.from_descripton`; copying BigQuery/Databricks-only macros into a Snowflake project.","solutions":["Use one of the supported methods: create, translate_type, numeric_type, string_type, from_description, format_add_column_list, format_remove_column_list, get_name.","Fix the method name typo (check the error message for the exact name that was requested).","If the method is adapter-specific (dbx_*), guard the call: only invoke it when the adapter is Databricks.","Reimplement the logic inline in Jinja/Rust or add the method to ColumnStatic's call_method match if you own the adapter code."],"exampleFix":"// before\n{% set t = Column.text_type(256) %}\n// after\n{% set t = Column.string_type(size=256) %}","handlingStrategy":"type-guard","validationCode":"// Jinja: restrict calls to a whitelist of supported methods\n{% set supported = ['create','translate_type','numeric_type','string_type','from_description','format_add_column_list','format_remove_column_list','get_name'] %}\n{% if method_name not in supported %}\n  {{ exceptions.raise_compiler_error(\"Unsupported Column method: \" ~ method_name) }}\n{% endif %}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep a cheat-sheet of the eight supported ColumnStatic methods and consult it when porting Python-adapter macros.","Grep your macros for `Column.` calls during dbt engine migrations.","Guard adapter-specific methods behind adapter type checks.","Add unit tests that render every macro touching Column.* so unknown-method errors surface in CI."],"tags":["jinja","adapter","column","unknown-method","api"],"backgroundTag":"unsupported-operation","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"}