diff options
| author | Anssi Kääriäinen <anssi.kaariainen@thl.fi> | 2015-04-16 08:39:31 +0300 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-04-16 09:31:29 -0400 |
| commit | 581afddc77ccd2e343d51ede5deb33bbcf113ab2 (patch) | |
| tree | 959559ad388c87dd80842ef50928bff22d5555b4 /tests | |
| parent | 1e594b257e74f60292ca421f9df11d5fd7804ea6 (diff) | |
[1.8.x] Fixed #24605 -- Fixed incorrect reference to alias in subquery.
Thanks to charettes and priidukull for investigating the issue, and to
kurevin for the report.
Backport of 355c5edd9390caad5725375abca03460805f663b from master
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/queries/models.py | 15 | ||||
| -rw-r--r-- | tests/queries/tests.py | 36 |
2 files changed, 45 insertions, 6 deletions
diff --git a/tests/queries/models.py b/tests/queries/models.py index bc540756fb..5d63ae9ea8 100644 --- a/tests/queries/models.py +++ b/tests/queries/models.py @@ -713,3 +713,18 @@ class Ticket23605B(models.Model): class Ticket23605C(models.Model): field_c0 = models.FloatField() + + +# db_table names have capital letters to ensure they are quoted in queries. +class Individual(models.Model): + alive = models.BooleanField() + + class Meta: + db_table = 'Individual' + + +class RelatedIndividual(models.Model): + related = models.ForeignKey(Individual, related_name='related_individual') + + class Meta: + db_table = 'RelatedIndividual' diff --git a/tests/queries/tests.py b/tests/queries/tests.py index 3589fa4a9b..5d12330b99 100644 --- a/tests/queries/tests.py +++ b/tests/queries/tests.py @@ -23,16 +23,16 @@ from .models import ( FK1, X, Annotation, Article, Author, BaseA, Book, CategoryItem, CategoryRelationship, Celebrity, Channel, Chapter, Child, ChildObjectA, Classroom, Company, Cover, CustomPk, CustomPkTag, Detail, DumbCategory, - Eaten, Employment, ExtraInfo, Fan, Food, Identifier, Item, Job, + Eaten, Employment, ExtraInfo, Fan, Food, Identifier, Individual, Item, Job, JobResponsibilities, Join, LeafA, LeafB, LoopX, LoopZ, ManagedModel, Member, ModelA, ModelB, ModelC, ModelD, MyObject, NamedCategory, Node, Note, NullableName, Number, ObjectA, ObjectB, ObjectC, OneToOneCategory, Order, OrderItem, Page, Paragraph, Person, Plaything, PointerA, Program, - ProxyCategory, ProxyObjectA, ProxyObjectB, Ranking, Related, RelatedObject, - Report, ReservedName, Responsibility, School, SharedConnection, - SimpleCategory, SingleObject, SpecialCategory, Staff, StaffUser, Student, - Tag, Task, Ticket21203Child, Ticket21203Parent, Ticket23605A, Ticket23605B, - Ticket23605C, TvChef, Valid, + 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, ) @@ -3693,3 +3693,27 @@ class Ticket23605Tests(TestCase): self.assertQuerysetEqual(qs1, [a1], lambda x: x) qs2 = Ticket23605A.objects.exclude(complex_q) self.assertQuerysetEqual(qs2, [a2], lambda x: x) + + +class TestTicket24605(TestCase): + def test_ticket_24605(self): + """ + Subquery table names should be quoted. + """ + i1 = Individual.objects.create(alive=True) + RelatedIndividual.objects.create(related=i1) + i2 = Individual.objects.create(alive=False) + RelatedIndividual.objects.create(related=i2) + i3 = Individual.objects.create(alive=True) + i4 = Individual.objects.create(alive=False) + + self.assertQuerysetEqual( + Individual.objects.filter(Q(alive=False), Q(related_individual__isnull=True)), + [i4], lambda x: x + ) + self.assertQuerysetEqual( + Individual.objects.exclude( + Q(alive=False), Q(related_individual__isnull=True) + ).order_by('pk'), + [i1, i2, i3], lambda x: x + ) |
