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 builds on top of #698 but I wasn't sure how you'd feel about this, so I wanted to submit a separate PR.
What happened with the
nul
crate was that I deployed #695 to make the Windows files reserved crate names first, and then I tried to delete the crate.But the keywords and categories tables have triggers that touch the crates table to set
updated_at
, and crates has a trigger to check for reserved crate names on update, which fails once a crate has a reserved name.So I added a wrapper to disable the reserved crate name trigger around the two statements that need it, and re-enable the trigger right after, within the transaction that the whole delete crate script uses.
This does lock the table until the transaction is rolled back or committed.
I'm also doing this unconditionally, and this situation will hopefully be pretty rare. I'd be up for adding code that checks if the name of the crate being deleted is in the reserved crate name table and only adding these statements if needed, if that sounds better.