#24880: Error on all db backends if `select_for_update` is run outside of a transaction -------------------------------+-------------------------------------- Reporter: suligap | Owner: nobody Type: Uncategorized | Status: new Component: Uncategorized | Version: master Severity: Normal | Resolution: Keywords: | Triage Stage: Unreviewed Has patch: 1 | Needs documentation: 1 Needs tests: 0 | Patch needs improvement: 1 Easy pickings: 0 | UI/UX: 0 -------------------------------+--------------------------------------
Comment (by shaib): The case I have in mind, mostly, is a project on Sqlite using generic code, where the generic code calls `select_for_update()`. Such code, whether it uses transactions or not, has been essentially bogus but allowed to run anyway, since the time `select_for_update()` was introduced. I expect that this things happen in the wild, because I suspect that people who actually use Sqlite are more likely to be using the default autocommit mode. My point of view is, essentially: If we're going for correctness on Sqlite, `select_for_update()` there should be an unconditional error. If we aren't, then the main value of the suggestion here is, to catch on Sqlite something which is only a problem elsewhere (as on Sqlite, `select_for_update()` is no safer in a transaction than out of it). Is this gain worth breaking code that works (for a lenient enough definition of "works"), and compromising the simple model that says "on Sqlite `select_for_update()` does nothing"? As I hinted above, the original decision to keep `select_for_update()` passing silently when run out of transactions on Sqlite was made on the django-developers mailing list; I think if we're going to change it, that's the place to do that as well. -- Ticket URL: <https://code.djangoproject.com/ticket/24880#comment:4> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/065.b493fce4ca2995bd34de55fb7f216ee5%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.