Preserve max_length and decimal constraints in alter_column replay#25
Merged
mr-fatalyst merged 1 commit intoApr 16, 2026
Merged
Conversation
Contributor
Author
|
@mr-fatalyst I just patched the ones I was running into, which are common, but there are others! https://pydantic.dev/docs/validation/1.10/usage/types/ |
Owner
|
I recently added this fields and didn't test everything yet. Thanks for PR! |
This file contains hidden or 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
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.
This PR preserves constraint-related
alter_columnchanges during migration generation and replay.Specifically, it keeps these fields from being dropped when migrations are generated or replayed:
max_lengthmax_digitsdecimal_placesIt also adds focused regression tests for those cases.
Problem
makemigrationscould repeatedly generate the samealter_column(...)operations for constraint-only field changes because those constraint fields were not preservedthrough the Python migration round-trip.
That meant Oxyde could detect the change, write the migration, and then lose part of that change when replaying migrations to rebuild schema state.
Changes
max_length,max_digits, anddecimal_placesin migration generationnew_fieldforalter_columntest_migrations_detection.pyScope
This fixes constraint-field round-tripping for
alter_column.It does not attempt to fix other unrelated repeated
alter_columndiffs.Testing
oxyde/tests/unit/test_migrations_detection.py