Make add_foreign_key retriable when safe_by_default is enabled #273
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.
related to #272 and #271
When adding a foreign key and safe mode is enabled:
if the validation fails, this leaves a NOT VALID foreign key in the database.
If we retry after having cleaned up the database, the creation of the NOT VALID foreign key constraint will fail because it will already be in the DB.
This commit makes the migration safely retriable by checking if said foreign key constraint already exists, and if so, skips its creation again.
When validation of foreign key fails, we also remove the NOT VALID foreign key constraint as to not leave the database in an unstable state.