Add missing foreign key constraint for columns badges.crate_id. #1840
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.
Since we may already have entries in the
badges
table referring to crates that don't exist, weneed to delete these entries before creating the foreign key constraint. This is a destructive
operation in the sense that it cannot be reverted, but it should only delete rows that should have
been deleted together with the crates they belong to.
We have a test to verify that all columns called
crate_id
are actually foreign keys referring tocrates.id
. However, the query for the relevant columns contains the filtercontype = 'f'
,effectively limiting the result to columns that already have foreign key constraints. This change
fixes the query to also allow
contype IS NULL
.In addition, I modified the query to only verify tables in the schema
public
. This is useful foran integration test for the database dumps in #1800.