8 ms·
I may be asking a naive question, but what is the rationale behind disabling foreign key support and using them anyway in the database schema? See https://githu
by koito17 2y ago
I may be asking a naive question, but what is the rationale behind disabling foreign key support and using them anyway in the database schema? See https://github.com/poundifdef/SmoothMQ/blob/46f8b22/queue/sqlite/sqlite.go#L56-L88 https://github.com/poundifdef/SmoothMQ/blob/46f8b22/queue/sq...
The "TODO: check for errors" comment, combined with what seems like disabling foreign key constraint checks, makes me a bit hesitant to try this out.
- memset 2y agoGood question. It was an evolution. Originally I enforced foreign keys, but inserts/updates were unbearably slow. So I updated the connection string to disable them (but, as you point out, I haven't updated the CREATE TABLE statements.) In practice, I did not find they were necessary - I was only using foreign keys to automatically CASCADE deletes when messages were removed. But instead of relying on sqlite to do that, I do it myself and wrap the delete statements in transactions. There are many TODOs and error checkings that I will, over time, clean up and remove. I'm glad you've pointed them out - that's the great thing about open source, you at least know what you're getting into and can help shine a light on things to improve!
- plasma 2y agoSome of the slowdown will come from not indexing the FK columns themselves, as they need to be searched during updates / deletes to check the constraints.