dbt-labs/dbt-core · error
Unknown method on ResultObject
Error message
Unknown method on ResultObject: '{method}' What it means
Catch-all arm of the Jinja method dispatch on ResultObject: only the 'keys' method is implemented (deliberately retained for dbt-external-table's stage_external_sources macro); any other method invocation raises this UnknownMethod error. Data access should go through the response/table/data attributes instead.
Solutions
- Use attribute access (response, table, data) or the 'keys' method
- Fix the method name in the template
- Extend the match arm if a new accessor is required — but keep 'keys' for dbt-external-table compatibility
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at crates/dbt-adapter/src/response.rs:415 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of dbt-labs/dbt-core@0267ce9170 (2026-09-07).
Data as JSON: /api/errors/fa8d34832caf948e.
Report an issue: GitHub.
Appendix: source
Thrown at crates/dbt-adapter/src/response.rs:415
data,
}
}
}
impl Object for ResultObject {
fn call_method(
self: &Arc<Self>,
_state: &State<'_, '_>,
method: &str,
_args: &[Value],
_listeners: &[Rc<dyn RenderingEventListener>],
) -> Result<Value, minijinja::Error> {
// NOTE: the `keys` method is used by the `stage_external_sources` macro in
// `dbt-external-table`. Don't delete this unless the external package is fixed.
if method == "keys" {
Ok(Value::from_iter(["response", "table", "data"]))
} else {
Err(minijinja::Error::new(
minijinja::ErrorKind::UnknownMethod,
format!("Unknown method on ResultObject: '{method}'"),
))
}
}
fn get_value(self: &Arc<Self>, key: &Value) -> Option<Value> {
match key.as_str()? {
"table" => self
.table
.as_ref()
.map(|t| Value::from_object((*t).clone())),
"data" => self.data.clone(),
"response" => Some(Value::from_object(self.response.clone())),
_ => Some(Value::UNDEFINED), // Only return empty at Parsetime TODO fix later
}
}
View on GitHub (pinned to 0267ce9170)