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

  1. Change the function's `volatility` config to a value supported by the adapter (typically 'deterministic').
  2. Check the adapter's documentation for which volatility values it supports and use one of those.
  3. 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

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


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)