Skip to content

Disable name trigger temporarily #699

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

Merged

Conversation

carols10cents
Copy link
Member

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.

@carols10cents carols10cents requested a review from alexcrichton May 1, 2017 15:37
@alexcrichton alexcrichton merged commit 102a91b into rust-lang:master May 2, 2017
@alexcrichton
Copy link
Member

👍

@carols10cents carols10cents deleted the disable-name-trigger-temporarily branch May 2, 2017 15:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants