summaryrefslogtreecommitdiff
path: root/tests/select_for_update
diff options
context:
space:
mode:
authorFrançois Freitag <francois.freitag@polyconseil.fr>2016-09-28 22:39:50 -0700
committerTim Graham <timograham@gmail.com>2016-10-04 10:46:29 -0400
commit8ac115c730353dfc6bdbd03e0671a978dcc99e15 (patch)
treef6a7aa9f5917de6f9d2bc529f6ba4da1f6b9c891 /tests/select_for_update
parent9e26a8331dd593c674ac94f2582093da01b070e8 (diff)
downloaddjango-8ac115c730353dfc6bdbd03e0671a978dcc99e15.tar.gz
Fixed #27193 -- Preserved ordering in select_for_update subqueries.
Diffstat (limited to 'tests/select_for_update')
-rw-r--r--tests/select_for_update/tests.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/tests/select_for_update/tests.py b/tests/select_for_update/tests.py
index e6e1155ee2..4c30ff7179 100644
--- a/tests/select_for_update/tests.py
+++ b/tests/select_for_update/tests.py
@@ -300,3 +300,12 @@ class SelectForUpdateTests(TransactionTestCase):
def test_nowait_and_skip_locked(self):
with self.assertRaisesMessage(ValueError, 'The nowait option cannot be used with skip_locked.'):
Person.objects.select_for_update(nowait=True, skip_locked=True)
+
+ def test_ordered_select_for_update(self):
+ """
+ Subqueries should respect ordering as an ORDER BY clause may be useful
+ to specify a row locking order to prevent deadlocks (#27193).
+ """
+ with transaction.atomic():
+ qs = Person.objects.filter(id__in=Person.objects.order_by('-id').select_for_update())
+ self.assertIn('ORDER BY', str(qs.query))