{"record":{"id":"d00c2bbd98ab2131","repo":"dbt-labs/dbt-core","slug":"found-volatility-volatility-specified-on-funct","errorCode":null,"errorMessage":"Found `{volatility}` volatility specified on function `{model.name}`. This volatility is not supported by {adapter.type()}, and will be ignored","messagePattern":"Found `(.+?)` volatility specified on function `(.+?)`\\. This volatility is not supported by (.+?), and will be ignored","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"crates/dbt-loader/src/dbt_macro_assets/dbt-adapters/macros/materializations/functions/scalar.sql","lineNumber":89,"sourceCode":"        IMMUTABLE\n    {% elif volatility == 'stable' %}\n        STABLE\n    {% elif volatility == 'non-deterministic' %}\n        VOLATILE\n    {% elif volatility != none %}\n        {# This shouldn't happen unless a new volatility is invented #}\n        {% do unsupported_volatility_warning(volatility) %}\n    {% endif %}\n    {# If no volatility is set, don't add anything and let the data warehouse default it #}\n{% endmacro %}\n\n{% macro unsupported_volatility_warning(volatility) %}\n    {{ return(adapter.dispatch('unsupported_volatility_warning', 'dbt')(volatility)) }}\n{% endmacro %}\n\n{% macro default__unsupported_volatility_warning(volatility) %}\n    {% set msg = \"Found `\" ~ volatility ~ \"` volatility specified on function `\" ~ model.name ~ \"`. This volatility is not supported by \" ~ adapter.type() ~ \", and will be ignored\" %}\n    {% do exceptions.warn(msg) %}\n{% endmacro %}\n","sourceCodeStart":71,"sourceCodeEnd":91,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-loader/src/dbt_macro_assets/dbt-adapters/macros/materializations/functions/scalar.sql#L71-L91","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\nconfig:\n  volatility: stable\n// after\nconfig:\n  volatility: deterministic","handlingStrategy":"validation","validationCode":"SUPPORTED = {'deterministic'}  # check adapter docs for supported set\nvol = model.config.get('volatility')\nassert vol is None or vol in SUPPORTED, f\"volatility '{vol}' not supported by this adapter\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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."],"tags":["dbt","udf","volatility","warning"],"backgroundTag":"invalid-enum-value","analyzedSha":"0267ce9170576975b76b64ce856b2e5848e96617","analyzedAt":"2026-09-07T21:53:39.732Z","contentChangedAt":"2026-09-07T21:53:39.732Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}