#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.

Reply via email to