dbt-labs/dbt-core · error
Unknown method on ColumnStatic: '{name}'
Error message
Unknown method on ColumnStatic: '{name}' What it means
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.
Source
Thrown at crates/dbt-adapter/src/column/types.rs:111
let columns = args.get::<Value>("columns")?;
let columns = Column::vec_from_jinja_value(AdapterType::Databricks, columns)?;
Ok(Value::from(self.dbx_format_remove_column_list(&columns)?))
}
"get_name" => {
let mut args: ArgParser = ArgParser::new(args, None);
let column = args.get::<Value>("column")?;
// FIXME: why is this DbtColumn and not Column?
let column = minijinja_value_to_typed_struct::<DbtColumn>(column).map_err(|e| {
minijinja::Error::new(
minijinja::ErrorKind::SerdeDeserializeError,
e.to_string(),
)
})?;
Ok(Value::from(self.dbx_get_name(&column)))
}
_ => Err(minijinja::Error::new(
minijinja::ErrorKind::UnknownMethod,
format!("Unknown method on ColumnStatic: '{name}'"),
)),
}
}
fn call(
self: &Arc<Self>,
_state: &minijinja::State,
args: &[Value],
_listeners: &[std::rc::Rc<dyn minijinja::listener::RenderingEventListener>],
) -> Result<Value, minijinja::Error> {
self.jinja_create(args)
}
}
impl ColumnStatic {
pub fn new(adapter_type: AdapterType) -> Self {View on GitHub (pinned to 0267ce9170)
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.
Example fix
// before
{% set t = Column.text_type(256) %}
// after
{% set t = Column.string_type(size=256) %} Defensive patterns
Strategy: type-guard
Validate before calling
// Jinja: restrict calls to a whitelist of supported methods
{% set supported = ['create','translate_type','numeric_type','string_type','from_description','format_add_column_list','format_remove_column_list','get_name'] %}
{% if method_name not in supported %}
{{ exceptions.raise_compiler_error("Unsupported Column method: " ~ method_name) }}
{% endif %} Prevention
- 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.
When it happens
Trigger: 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.
Common situations: 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.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- Unknown method on adapter object: '{name}'
- {}
- {msg}
- Failed to downcast jinja value to Column; expected Column ob
- describe_dynamic_table is not supported by the {} adapter
AI-assisted analysis of dbt-labs/dbt-core@0267ce9170 (2026-09-07).
Data as JSON: /api/errors/715a25cd646c8146.
Report an issue: GitHub.