- This file provides a full account of all changes to
dbt-snowflake - The format is based on Keep a Changelog, adheres to Semantic Versioning, and is generated by Changie
- Changes are listed under the (pre-)release in which they first appear
- Subsequent releases include changes from previous releases
- "Breaking changes" listed under a version may require action from end users or external maintainers when upgrading to that version
- Do not edit this file directly. This file is auto-generated using changie
- For details on how to document a change, see the contributing guide
- snowflake__generate_database_name reads catalog_database from the catalog relation via build_catalog_relation; when set it takes highest priority over model database config and target.database. catalog_database is now surfaced on BuiltInCatalogRelation and IcebergRestCatalogRelation. (#2004)
- Allow Workload Identity Federation (e.g. OIDC) auth to use a token without a user by exempting the workload_identity authenticator from the token/user profile validation (#)
- bump dbt-adapters lower bound to 1.24.4 to pick up catalog_database support (#2053)
- Use SHOW USER FUNCTIONS in list_function_relations_without_caching to filter built-in functions server-side; eliminates per-schema large-result chunked S3 fetches that saturated customer-owned VPCe stage endpoints (#1973)
- Add upper bound
<2.0ondbt-coreto prevent pip from resolving to dbt-core 2.0 (Fusion engine), which is incompatible with the python adapter (#2013)
- Add transient support for Snowflake dynamic tables via
transientconfig option andsnowflake_default_transient_dynamic_tablesbehavior flag. (#716)
- Add COPY GRANTS support for dynamic tables to inherit object-level privileges during table creation and replacement (#1154)
- Introduction of Workload Identity Federation as a supported method of authentication to Snowflake (#1234)
- Add information on number of rows in CTAS (#1531)
- Add snowflake_initialization_warehouse parameter for dynamic tables (#1566)
- Add immutable_where parameter for dynamic tables (#none)
- Add support for Snowflake Programmatic Access Token (PAT) authentication (#1688)
- Support PyPI packages for Python UDFs - when packages are specified in function config, they are templated into the CREATE statement (PACKAGES = (...)) for scalar and aggregate Python UDFs (#1737)
- Add scheduler configuration support for Snowflake dynamic tables, enabling dbt-managed refresh scheduling that is decoupled from upstream and downstream dynamic table dependencies. (#none)
- Add change_tracking support for regular Snowflake tables. (#722)
- Add refresh_warehouse config for Snowflake dynamic tables, allowing a separate warehouse for self-refresh independent of the DDL execution warehouse (#1193)
- Add support for
iceberg_versionconfig to enable Iceberg V3 table creation via model config orcatalogs.ymladapter_properties. (#1779) - Add support for the Snowflake COPY TAGS parameter in CREATE OR REPLACE TABLE, clone operations, and built-in Iceberg table creation (#1857)
- Added support for JS UDFs (#1859)
- Added support for --empty in dbt seed (#1865)
- Add
tmp_relation_type=transientsupport for incremental models, enabling Snowflake lineage tracking; addsnowflake__resolve_incremental_tmp_relationdispatch macro for controlling tmp relation destination (#1893) - Add bridge_v2_catalog support: _v2_to_v1_type, _v2_table_format (uppercase), _translate_v2_properties (linked field map), and Capability.CatalogsV2 (#1920)
- Enable discovering pre-existing functions by updating
list_relations_without_cachingto include function relations (#1488) - Add override of diff_column_data_types to preserve collation while altering column (#1258)
- Fix record/replay support for cursor.stats attribute access. (#1573)
- Add cluster_by ALTER support for Snowflake dynamic tables. (#706)
- equals macro now uses IS NOT DISTINCT FROM clause for comparison (#1663)
- When persist_docs.columns is enabled, dbt now warns about columns defined in YAML that don't exist in the database and filters them via the validate_doc_columns helper. (#1690)
- Fix PARTITION BY clause placement in CREATE ICEBERG TABLE DDL for Snowflake built-in catalog (#1720)
- Fix schema mismatch error for structured types (OBJECT, ARRAY, MAP) in Iceberg v3 tables by normalizing VARCHAR(134217728) to VARCHAR(16777216) (#1721)
- Use INSERT OVERWRITE to make dbt seed atomic on Snowflake, preventing concurrent readers from seeing an empty table between truncate and insert (#740)
- Add regression test for unit test fixture string values being silently truncated when database column has a narrow varchar type (#1806)
- Normalize show objects results to avoid type inference edge cases (#1826)
- Fix ALTER DYNAMIC TABLE with immutable where sometimes causing a syntax error (#1836)
- Fix Python incremental
__dbt_tmpbeing created as a permanent table, restore thetransientconfig for Pythonmaterialized='table', and accepttmp_relation_type='table'for Python models. (#1928) - Add snowflake__persist_docs override and warn from snowflake__alter_column_comment so persist_docs emits the missing-column warning on Snowflake without an extra get_columns_in_relation call (#1937)
- leverage new expanded_data_type field to avoid impacting downstream use cases for
data_type(#1510)
- Update dbt-adapters dep to 1.22.3 (#1528)
- Bump dbt-adapters floor to 1.24.1 for catalogs v2 and JS UDF support (#1963)
- @adam-stone (#1688)
- @ajhlee-dbt (#1836)
- @b-per (#1531, #1893)
- @colinrogers (#1193)
- @ibelianski (#1566, #none, #none, #722)
- @igorbelianski-cyber (#716, #706)
- @jecolvin (#1720, #1721)
- @roryjbd,sfc-gh-pmansour (#1234)
- @shaariqch (#1154)
- @yostrinsky (#1857)
- Log when underscores in Snowflake account names are replaced with hyphens. (#1467)
- Ensure selection time filter timezone matches the delete filter for microbatch (#955, #892)
- Correct volatility specification for python functions (#1504)
- Preserve collation when altering a column size (#1258)
- Update default python runtime version (#1492)
- Add support for python UDFs (#1410)
- Allow partition_by model config for Snowflake Iceberg tables (#1349)
- Add support for python aggregate functions (#1432)
- Bump minimum dbt-adapters to 1.19.0█ (#1421)
- Add cluster by config in Snowflake for dynamic tables (#706)
- Remove catalog from target_relation in incremental macro (#1376)
- Add basic support for materializing tables in a Glue Catalog Linked Database with Iceberg REST (#1377)
- Add platform_detection_timeout_seconds configuration param to disable eager metadata detection in the snowflake-connector (#1278)
- Support volatility setting in sql UDFs (#1345)
- Set client prefetch threads to 1 to prevent deadlock at exit (#1368)
- Improve snowflake connector log handling (#1399)
- Update bigquery job handling to invoke job.cancel on timeout (#1355)
- Test handling of unknown function macro lookup (#1344)
- @nazliander (#706)
- @wiggzz (#1368, #1368)
- Support Iceberg REST with Catalog Linked Databases in Snowflake (#1251)
- Add support for incremental materializations using iceberg rest catalog / catalog linked db (#1123)
- Support for scalar functions (#1292)
- Fix adapter.get_relation to find quoted case-sensitive relations (#694)
- quote columns when altering tables for incremental materialization (#695)
- fix table and column descriptions for snowflake iceberg tables (#1015)
- Rename DT temp tables to avoid problematic drops (#713)
- Omit external volume from DDL when not provided in the YAML file (#772)
- fix issue where incorrect varchar size is applied for iceberg table columns (#1257)
- handle non-model node types being passed to generate_database_name (#1309)
- Fix references to function properties in funciton macros (#1365)
- bump dbt-adapters version pin floor to >=1.16.6 (#1328)
- Add support for optional iceberg builtin catalog relation parameters for data retention/extension, storage serialization & change tracking (#1158)
- Add 's3_stage_vpce_dns_name' session parameter (#1161)
- remove reliance on setting session
quoted_identifiers_ignore_caseparameter to normalize snowflake metadata queries (#1159)
- update the lower bound for dbt-adapters version in dbt-snowflake to >=1.16 (#1148)
- Add row_access_policy and table_tag config for Snowflake models (#697)
- Use catalog_name as signifier for logical catalog (#1134)
- populate file_format from top level integration config field (#1134)
- Set append=True as default query comment append behaviour (#1066)
- Apply cluster keys via a separate ALTER statement after creating a table via a CTAS statement. (#1071)
- Respect QUOTED_IDENTIFIERS_IGNORE_CASE with dynamic tables. (#993)
- Remove enable_iceberg_materializations behavior flag now that 2025_01 is required (#1025)
- Expand snapshot testing. (#1068)
- Raise the dbt-adapters pin to 1.14.3 to make dbt-adapter dependency resolution more reliable for higher versions of snowflake. (#1098)
- correct cluster_by type check to return str as-is (#1050)
- Update
iceberg_managedcatalog type tobuilt_in(#1011)
- Add support for Snowflake's managed Iceberg catalog via dbt's catalog framework (#932)
- Correctly detect Iceberg tables when using multiple databases. (#846)
- Dynamic table metadata queries now ignore the QUOTED_IDENTIFIERS_IGNORE_CASE setting (#917)
datetime.datetime.utcnow()is deprecated as of Python 3.12 (#980)- Fix regression in list_relations pagination that did not properly handle projects with more than 1,000 models (#989)
- Pin certifi library to address regression in version 2025.4.26 (#1027)
- Simple fix to record/replay annotation. (#761)
- Update list_relations_without_caching macro to reuse the same query on pagination and handle the quoted_identifiers_ignore_case setting (#967)
- Support MicrobatchConcurrency (#1260)
- Added support for custom iceberg base_location_root (#1284)
- Add insert_overwrite 'incremental' strategy. (#736)
- Fix parsing of the VECTOR type (#1098)
- Use timestamp_tz type in microbatch
deleteDDL (#1256) - AUTO should no longer lead to rebuilds of dynamic tables. (#1267)
- Loosen pin for snowflake-connector-python to pin at 3.x (#835)
- Move from setup.py to pyproject.toml and to hatch as a dev tool (#1250)
- Use new
batchcontext variables overnode.config.__dbt_internalones (#1263) - Update default Python version for python models (#1203)
- Expand types allowed in columns to allow structured types. (#310)
- Resolve CVE-2025-24794 (#859)
For information on prior major and minor releases, see their changelogs: