9.22 Release notes (with behavior changes): Aug 04, 2025-Aug 08, 2025

Attention

This release has been completed. For differences between the in-advance and final versions of these release notes, see the Release notes change log.

Behavior change bundles

This release contains the following behavior change bundles:

Bundle NameStatus in this ReleasePrevious Status
2025_05Disabled by default; admins can enable for testingN/A (introduced in this release)
2025_04Enabled by default; admins can disable for opt-outDisabled by default
2025_03Generally enabled; admins can no longer enable/disableEnabled by default

The status for each bundle will change in the next behavior change release, planned for September 2025; however, this schedule is subject to change.

For more information about bundle statuses and how they may impact your accounts, see About Behavior Changes.

New features

Data quality: Using expectations to define quality checks (General availability)

You can use an expectation to define the threshold for a data metric function (DMF). After you add the expectation to an association between a DMF and an object, if a value returned by the DMF does not match the Boolean expression of the expectation, it is flagged as a violation of the data quality check.

For more information, see Use SQL to work with expectations.

Extensibility updates

Tracing SQL statements run from handler code (General availability)

When you have enabled tracing, Snowflake traces SQL statements executed in conjunction with other traced code, such as within the handler for a stored procedure or user-defined function.

For more information, see SQL statement tracing.

Data pipeline updates

Dynamic tables: Support for immutability constraints

Immutability constraints give you finer control over dynamic table updates by allowing parts of the table to remain unchanged instead of always reflecting the latest query results.

By marking specific regions as immutable, you can:

  • Prevent propagation of updates or deletions to existing data.
  • Restrict inserts, updates, and deletes for rows matching a condition.
  • Limit future modifications while still allowing incremental updates to other parts of the table.

To define immutability constraints, use the IMMUTABLE WHERE parameter in the CREATE DYNAMIC TABLE or ALTER DYNAMIC TABLE command.

For more information, see Understanding immutability constraints.

Dynamic tables: Support for backfill

You can now create a dynamic table with its initial data backfilled from a regular table. Backfilling is a zero-copy, low-cost operation that makes the source data immediately available in the dynamic table.

You can backfill data into a dynamic table while still defining a custom refresh query for future updates. With immutability constraints, backfilled data remains unchanged even if it no longer matches the upstream source, ensuring it persists over time.

For more information, see Backfill examples.

Release notes change log

AnnouncementUpdateDate
Release notesInitial publication (preview)Aug 01, 2025
Data quality: Using expectations to define quality checks (General availability)Added to New featuresAug 05, 2025
Tracing SQL statements run from handler code (General availability)Added to Extensibility updates (moved from 9.21 release notes)Aug 06, 2025
Security updates: Private Service Connect Endpoints for internal stages on Google Cloud (General availability)Removed section and its announcement(s):Aug 07, 2025