Add support for QuerySet.select_for_update()

XMLWordPrintableJSON

    • Type: New Feature
    • Resolution: Unresolved
    • Priority: Unknown
    • None
    • Affects Version/s: None
    • Component/s: django
    • None
    • Python Drivers
    • Hide

      1. What would you like to communicate to the user about this feature?
      2. Would you like the user to see examples of the syntax and/or executable code and its output?
      3. Which versions of the driver/connector does this apply to?

      Show
      1. What would you like to communicate to the user about this feature? 2. Would you like the user to see examples of the syntax and/or executable code and its output? 3. Which versions of the driver/connector does this apply to?
    • None
    • None
    • None
    • None
    • None
    • None

      Context

      It appears there's a way to emulate SELECT ... FOR UPDATE in MongoDB.

      After setting DatabaseFeatures.has_select_for_update = True and implementing the necessary logic in the backend's SQLCompiler, check Django's `select_for_update` test app.

      The MongoDB blog and and Django's documentation for select_for_update() motivate use cases.

      Potential Implementation Strategy

      I'm not sure where the logic will go offhand (or if it's even feasible). In SQL, it's part of the query (see query.select_for_update in SQLCompiler.as_sql()) but it seems for MongoDB, the solution is to use db.findOneAndUpdate() rather than to add something to the pipeline.

      Acceptance Criteria

      Pass the `select_for_update` test app with the DatabaseFeature.has_select_for_update = True set as a flag

      Pitfalls

      Feasibility needs research

            Assignee:
            Unassigned
            Reporter:
            Tim Graham
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: