This document is meant to help you migrate your Terraform config and maintain compatibility after enabling given Snowflake BCR Bundle. Some of the breaking changes on Snowflake side may be not compatible with the current version of the Terraform provider, so you may need to update your Terraform config to adapt to the new behavior. As some changes may require work on the provider side, we advise you to always use the latest version of the provider (new features and fixes policy). To avoid any issues and follow migration guide when migrating to newer versions. According to the Bundle Lifecycle, changes are eventually enabled by default without the possibility to disable them, so it's important to know what is going to be introduced beforehand. If you would like to test the new behavior before it is enabled by default, you can use the SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE command to enable the bundle manually, and then the SYSTEM$DISABLE_BEHAVIOR_CHANGE_BUNDLE command to disable it.
Remember that only changes that affect the provider are listed here, to get the full list of changes, please refer to the Snowflake BCR Bundle documentation.
The snowflake_execute resource won't be listed here, as it is users' responsibility to check the SQL commands executed and adapt them to the new behavior.
Important
This change has been rolled back from the BCR 2025_03.
Changed format in Arguments column from SHOW FUNCTIONS/PROCEDURES output is not compatible with the provider parsing function. It leads to:
snowflake_functionsandsnowflake_proceduresbeing inoperable. Check: #3822.- All function and all procedure resources failing to read their state from Snowflake, which leads to removing them from terraform state (if
terraform applyorterraform plan --refresh-onlyis run). Check: #3823.
The parsing was improved and is available starting with the 2.3.0 version of the provider. This fix was also backported to the 1.2.3 version.
To use the provider with the bundles containing this change:
- Bump the provider to 2.3.0 version (or 1.2.3 version).
- Affected data sources should work without any further actions after bumping.
- If your function/procedure resources were removed from terraform state (you can check it by running
terraform state list), you need to reimport them (follow our resource migration guide). - If your function/procedure resources are still in the terraform state, they should work any further actions after bumping.
Reference: BCR-1944
Important
This change has been rolled back from the BCR 2025_04.
Important
This change has not been addressed in the provider yet. This will be addressed in the next versions of the provider.
The MFA_AUTHENTICATION_METHODS property is deprecated. Setting the MFA_AUTHENTICATION_METHODS property returns an error. If you use the authentication_policy resource with mfa_authentication_methods field
and have this bundle enabled, the provider will return an error.
Reference: BCR-1971
Creating an external table succeeds only if a user’s primary role has the USAGE privilege on the stage referenced in the snowflake_external_table resource. If you manage external tables in the provider, please grant the USAGE privilege on the relevant stages to the connection role.
Reference: BCR-1993
The CREATE DATA EXCHANGE LISTING that is granted on account was changed to just CREATE LISTING.
If you are using any of the privilege-granting resources, such as snowflake_grant_privileges_to_account_role
to perform no downtime migration, you may want to follow our resource migration guide.
Basically the steps are:
- Remove the resource from the state
- Adjust it to use the new privilege name, i.e.
CREATE LISTING - Re-import the resource into the state (with correct privilege name in the imported identifier)
Reference: BCR-1926
Max sizes for the few data types were increased.
There are no immediate impacts found on the provider execution.
However, as explained in the Data type changes section of our migration guide, the provider fills out the data type attributes (like size) if they are not provided by the user.
Sizes of VARCHAR and BINARY data types (when no size is specified) will continue to use the old defaults in the provider (16MB and 8MB respectively).
If you want to use bigger sizes after enabling the Bundle, please specify them explicitly.
These default values may be changed in the future versions of the provider.
Reference: BCR-1942
The psutil package is no longer implicitly injected into Python UDFs and stored procedures.
Adjust your configuration to use the psutil package explicitly in your Python UDFs and stored procedures, like so:
resource "snowflake_procedure_python" "test" {
packages = ["psutil==5.9.0"]
# other arguments...
}Reference: BCR-1948