Snowddl

Latest version: v0.46.0

Safety actively analyzes 723158 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 21

0.44.0

- Reworked `OUTBOUND_SHARE` resolver. Now it supports more than 3 accounts per share. `SET ACCOUNTS` command was replaced with `ADD ACCOUNTS` and `REMOVE ACCOUNTS`, since `SET ACCOUNTS` no longer supports `SHARE_RESTRICTIONS` parameter.

0.43.0

- Introduced action `validate`. It prepares and validates config, but stops right before connecting to Snowflake. It might be helpful for automated checks and git hooks.
- Removed `self.engine` from application classes. Now engine is created and closed only during `execute()` call, but not during `__init__`.

This change should not have any impact, unless you have custom application classes. In this case replace `with self.engine` call with `with self.get_engine()`. Some output functions now also accept `engine` argument instead of relying on `self.engine`.

0.42.1

- Prevented SnowDDL from trying to change `OWNERSHIP` of Notebook object. This change is explicitly [not supported](https://docs.snowflake.com/en/user-guide/ui-snowsight/notebooks-limitations) by Snowflake.

0.42.0

- Introduced logic to `.lstrip(" \n\r\t").rstrip(" \n\r\t;")` from object config parameters containing SQL snippets:
- AGGREGATION_POLICY: `body`;
- DYNAMIC_TABLE: `text`;
- MASKING_POLICY: `body`;
- MATERIALIZED_VIEW: `text`;
- PROJECTION_POLICY: `body`;
- ROW_ACCESS_POLICY: `body`;
- TASK: `body`;
- VIEW: `text`;

This change should help to prevent issues with these characters causing SnowDDL to re-create object constantly. Affected objects might be re-created once after the update.

FUNCTION and PROCEDURE are not affected by this change, since their bodies may contain code which is not SQL.

0.41.0

- Changed naming for some roles automatically created by SnowDDL to prevent collisions with native Snowflake entities, specifically `DATABASE ROLES`:
- `DatabaseRole` -> `DatabaseAccessRole`
- `SchemaRole` -> `SchemaAccessRole`
- `ShareRole` -> `ShareAccessRole`
- `WarehouseRole` -> `WarehouseAccessRole`

This change affects SnowDDL internals only. Config format and business logic remains the same. Names of roles in Snowflake account remain the same. Only names of files, classes and constants were changed.

0.40.0

- `VIEW` object type is now supported as a valid target for `STREAM`. Streams are resolved AFTER views.
- Added `change_tracking` parameter for views.
- Added validation of `change_tracking=True` for `EVENT_TABLE`, `TABLE` and `VIEW` targeted by `STREAM`.
- Reworked `STREAM` replace conditions. Now resolver should react to changes in `object_type` and `object_name` properly.
- Stale streams will be suggested for replacement even if all other parameters are the same. It is especially important for streams on views.
- Added "replace reasons" comments before `CREATE OR REPLACE STREAM` for better clarity. It is similar to "replace reasons" on tables.
- Renamed technical object type `EXTERNAL_VOLUME` into `VOLUME`. It is necessary for grants to operate properly.
- Added tests for streams.

Page 2 of 21

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.