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

  1. 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.
  2. Fix the method name typo (check the error message for the exact name that was requested).
  3. If the method is adapter-specific (dbx_*), guard the call: only invoke it when the adapter is Databricks.
  4. 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

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


AI-assisted analysis of dbt-labs/dbt-core@0267ce9170 (2026-09-07). Data as JSON: /api/errors/715a25cd646c8146. Report an issue: GitHub.