mirror of
https://github.com/django/django.git
synced 2025-08-03 18:38:50 +00:00
Fixed #26522 -- Fixed a nondeterministic AssertionError in QuerySet combining.
Thanks Andrew Brown for the test case.
This commit is contained in:
parent
dacdcec767
commit
9bbb6e2d25
4 changed files with 22 additions and 3 deletions
|
@ -24,8 +24,9 @@ from .models import (
|
|||
ProxyCategory, ProxyObjectA, ProxyObjectB, Ranking, Related,
|
||||
RelatedIndividual, RelatedObject, Report, ReservedName, Responsibility,
|
||||
School, SharedConnection, SimpleCategory, SingleObject, SpecialCategory,
|
||||
Staff, StaffUser, Student, Tag, Task, Ticket21203Child, Ticket21203Parent,
|
||||
Ticket23605A, Ticket23605B, Ticket23605C, TvChef, Valid, X,
|
||||
Staff, StaffUser, Student, Tag, Task, Teacher, Ticket21203Child,
|
||||
Ticket21203Parent, Ticket23605A, Ticket23605B, Ticket23605C, TvChef, Valid,
|
||||
X,
|
||||
)
|
||||
|
||||
|
||||
|
@ -1382,6 +1383,18 @@ class Queries4Tests(TestCase):
|
|||
self.assertEqual(len(combined), 1)
|
||||
self.assertEqual(combined[0].name, 'a1')
|
||||
|
||||
def test_join_reuse_order(self):
|
||||
# Join aliases are reused in order. This shouldn't raise AssertionError
|
||||
# because change_map contains a circular reference (#26522).
|
||||
s1 = School.objects.create()
|
||||
s2 = School.objects.create()
|
||||
s3 = School.objects.create()
|
||||
t1 = Teacher.objects.create()
|
||||
otherteachers = Teacher.objects.exclude(pk=t1.pk).exclude(friends=t1)
|
||||
qs1 = otherteachers.filter(schools=s1).filter(schools=s2)
|
||||
qs2 = otherteachers.filter(schools=s1).filter(schools=s3)
|
||||
self.assertQuerysetEqual(qs1 | qs2, [])
|
||||
|
||||
def test_ticket7095(self):
|
||||
# Updates that are filtered on the model being updated are somewhat
|
||||
# tricky in MySQL.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue