dbt-labs/dbt-core · warning
Found ` ` volatility specified on function ` `. This…
Error message
Found `{volatility}` volatility specified on function `{model.name}`. This volatility is not supported by {adapter.type()}, and will be ignored What it means
This warning is raised by the default__unsupported_volatility_warning macro when a function model specifies a `volatility` value (e.g. 'stable', 'volatile') that the current adapter does not support for its functions. dbt names the offending volatility and the function model so users know the setting is being discarded.
Solutions
- Change the function's `volatility` config to a value supported by the adapter (typically 'deterministic').
- Check the adapter's documentation for which volatility values it supports and use one of those.
- Remove the volatility config entirely if the function's determinism does not need to be declared.
Example fix
// before config: volatility: stable // after config: volatility: deterministic
Defensive patterns
Strategy: validation
Validate before calling
SUPPORTED = {'deterministic'} # check adapter docs for supported set
vol = model.config.get('volatility')
assert vol is None or vol in SUPPORTED, f"volatility '{vol}' not supported by this adapter" Prevention
- Consult the adapter docs for the exact supported volatility values.
- Standardize function configs across the project via a shared dbt_project.yml variable.
- Test UDF creation on the target warehouse before deploying new volatility values.
When it happens
Trigger: A function materialization calls unsupported_volatility_warning with a volatility string that failed the adapter's supported check (e.g. volatility is not 'deterministic' on adapters that only accept deterministic for SQL UDFs), and the dispatched default implementation runs.
Common situations: Setting volatility: stable or volatile on a UDF for an adapter (e.g. Snowflake/Databricks variants) that only supports deterministic; copy-pasting volatility configs across warehouses with different support matrices.
Understand the failure class
Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.
Related errors
- Volatility is not supported by
- Configuration changes were identified and…
- Detected columns with numeric type and unspecified…
- In relation : The following columns are specified in the…
- Argument must be a string
AI-assisted analysis of dbt-labs/dbt-core@0267ce9170 (2026-09-07).
Data as JSON: /api/errors/d00c2bbd98ab2131.
Report an issue: GitHub.
Appendix: source
Thrown at crates/dbt-loader/src/dbt_macro_assets/dbt-adapters/macros/materializations/functions/scalar.sql:89
IMMUTABLE
{% elif volatility == 'stable' %}
STABLE
{% elif volatility == 'non-deterministic' %}
VOLATILE
{% elif volatility != none %}
{# This shouldn't happen unless a new volatility is invented #}
{% do unsupported_volatility_warning(volatility) %}
{% endif %}
{# If no volatility is set, don't add anything and let the data warehouse default it #}
{% endmacro %}
{% macro unsupported_volatility_warning(volatility) %}
{{ return(adapter.dispatch('unsupported_volatility_warning', 'dbt')(volatility)) }}
{% endmacro %}
{% macro default__unsupported_volatility_warning(volatility) %}
{% set msg = "Found `" ~ volatility ~ "` volatility specified on function `" ~ model.name ~ "`. This volatility is not supported by " ~ adapter.type() ~ ", and will be ignored" %}
{% do exceptions.warn(msg) %}
{% endmacro %}
View on GitHub (pinned to 0267ce9170)