-
Notifications
You must be signed in to change notification settings - Fork 110
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feat!: forward-only changes schema modification check #2576
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
treysp
force-pushed
the
trey/forward-only-additive-only
branch
from
May 7, 2024 17:12
0a0eb2e
to
d60e09e
Compare
eakmanrq
reviewed
May 7, 2024
eakmanrq
reviewed
May 7, 2024
eakmanrq
reviewed
May 7, 2024
izeigerman
reviewed
May 7, 2024
izeigerman
reviewed
May 7, 2024
izeigerman
reviewed
May 7, 2024
izeigerman
reviewed
May 7, 2024
izeigerman
reviewed
May 7, 2024
tobymao
reviewed
May 7, 2024
tobymao
reviewed
May 8, 2024
tobymao
reviewed
May 8, 2024
treysp
changed the title
Feat: forward-only changes schema modification check
Feat!: forward-only changes schema modification check
May 8, 2024
tobymao
reviewed
May 8, 2024
tobymao
reviewed
May 8, 2024
tobymao
reviewed
May 8, 2024
tobymao
reviewed
May 8, 2024
tobymao
reviewed
May 8, 2024
treysp
force-pushed
the
trey/forward-only-additive-only
branch
5 times, most recently
from
May 15, 2024 16:09
50d801e
to
9215b86
Compare
izeigerman
reviewed
May 15, 2024
izeigerman
reviewed
May 15, 2024
treysp
force-pushed
the
trey/forward-only-additive-only
branch
from
May 15, 2024 16:52
1815d71
to
7d10bec
Compare
tobymao
reviewed
May 15, 2024
tobymao
reviewed
May 15, 2024
tobymao
reviewed
May 15, 2024
tobymao
reviewed
May 15, 2024
treysp
force-pushed
the
trey/forward-only-additive-only
branch
from
May 21, 2024 22:52
b602daa
to
0995c7e
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Some forward-only changes require schema modifications that drop existing data (e.g., changing a column type from
str
toint
). If a user inadvertently makes such a change, they will lose existing data. This feature identifies destructive changes and optionally warns/errors before they occur to avoid accidental data loss.The feature introduces a new model kind property
on_destructive_change
with valid valuesallow
,warn
, anderror
(default iserror
). Theon_destructive_change
property only applies to incremental models and can be specified as a model default.Users may want to temporarily allow a destructive change to a forward-only model. The feature introduces to the
plan
command a new--allow-destructive-model
selector to temporarily allow destructive changes.Of note
Defaults
on_destructive_change
is a property of a model kindERROR
ALLOW
Plan time check
SchemaDiffer
and engine-specific rules to determine whether a change is destructive.columns_to_types
is known.columns_to_types
for the model and all directly modified ancestors.Run time check
Alter
s passed fromSchemaDiffer
toalter_table()
to determine whether a change is destructive.dbt
on_schema_change
setting to sqlmeshon_destructive_change
on_schema_change
values are mapped toon_destructive_change
as follows: