#32888: Using select_for_update with self as an of-argument gets dropped when 
only
selecting fields on related model
-------------------------------------+-------------------------------------
               Reporter:  Hannes     |          Owner:  nobody
  Ljungberg                          |
                   Type:  Bug        |         Status:  new
              Component:  Database   |        Version:  dev
  layer (models, ORM)                |
               Severity:  Normal     |       Keywords:
           Triage Stage:             |      Has patch:  0
  Unreviewed                         |
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 The existing test "test_for_update_of_self_when_self_is_not_selected" can
 be extended to demonstrate this behaviour:

 {{{
 diff --git a/tests/select_for_update/tests.py
 b/tests/select_for_update/tests.py
 index 705975b760..00fa102d33 100644
 --- a/tests/select_for_update/tests.py
 +++ b/tests/select_for_update/tests.py
 @@ -240,9 +240,15 @@ class SelectForUpdateTests(TransactionTestCase):
          select_for_update(of=['self']) when the only columns selected are
 from
          related tables.
          """
 -        with transaction.atomic():
 +        with transaction.atomic(), CaptureQueriesContext(connection) as
 ctx:
              values =
 
list(Person.objects.select_related('born').select_for_update(of=('self',)).values('born__name'))
          self.assertEqual(values, [{'born__name': self.city1.name}])
 +        if connection.features.select_for_update_of_column:
 +            expected = ['select_for_update_person"."id']
 +        else:
 +            expected = ['select_for_update_person']
 +        expected = [connection.ops.quote_name(value) for value in
 expected]
 +        self.assertTrue(self.has_for_update_sql(ctx.captured_queries,
 of=expected))

      @skipUnlessDBFeature('has_select_for_update_nowait')
      def test_nowait_raises_error_on_block(self):
 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/32888>
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/052.b931d35ed3642885e9799d898b110791%40djangoproject.com.

Reply via email to