Post mortem on Linear incident from Jan 24th, 2024
linear.app
linear.app
Ouch. DELETE FROM <new_table> is what they wanted here.
Somewhat related, and this wouldn't have saved them since they were using TRUNCATE instead of DELETE, but I always use ON DELETE RESTRICT instead of ON DELETE CASCADE when setting up foreign keys. I'd rather be slightly inconvenienced on the rare occasion I'm hard-deleting data and have to be really explicit about what I want to delete rather than inadvertently allow a "convenience" like ON DELETE CASCADE to delete my data for me.
[1]: https://www.postgresql.org/docs/current/sql-truncate.html [2]: I like to think I would have at least checked the docs because there's no efficient way for TRUNCATE ... CASCADE to work how you intended given how I know TRUNCATE is implemented, but who knows?