diff options
| author | Tim Graham <timograham@gmail.com> | 2017-05-30 06:40:41 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-05-30 06:40:41 -0400 |
| commit | f04495521ade8a2befc1aca70dd0a2c7aad4c987 (patch) | |
| tree | da0fc9cb6d952bf60bc5c9776ea4748aecc6255f /tests | |
| parent | 17ed0d36bc3c380b7d8a0a30ceda09d98ab74fd4 (diff) | |
Fixed #28199 -- Fixed Subquery generating unnecessary/invalid CAST.
Thanks Simon Charette for the fix.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/expressions/models.py | 6 | ||||
| -rw-r--r-- | tests/expressions/tests.py | 9 |
2 files changed, 14 insertions, 1 deletions
diff --git a/tests/expressions/models.py b/tests/expressions/models.py index 51042c845b..85f18fdf0e 100644 --- a/tests/expressions/models.py +++ b/tests/expressions/models.py @@ -1,6 +1,7 @@ """ Tests for F() query expression syntax. """ +import uuid from django.db import models @@ -79,8 +80,13 @@ class SimulationRun(models.Model): return "%s (%s to %s)" % (self.midpoint, self.start, self.end) +class UUIDPK(models.Model): + id = models.UUIDField(primary_key=True, default=uuid.uuid4) + + class UUID(models.Model): uuid = models.UUIDField(null=True) + uuid_fk = models.ForeignKey(UUIDPK, models.CASCADE, null=True) def __str__(self): return "%s" % self.uuid diff --git a/tests/expressions/tests.py b/tests/expressions/tests.py index 5483a17fd1..ed3e2ce628 100644 --- a/tests/expressions/tests.py +++ b/tests/expressions/tests.py @@ -24,7 +24,8 @@ from django.test import ( from django.test.utils import Approximate from .models import ( - UUID, Company, Employee, Experiment, Number, Result, SimulationRun, Time, + UUID, UUIDPK, Company, Employee, Experiment, Number, Result, SimulationRun, + Time, ) @@ -479,6 +480,12 @@ class BasicExpressionsTests(TestCase): subquery_test2 = Company.objects.filter(pk=Subquery(small_companies.filter(num_employees=3))) self.assertCountEqual(subquery_test2, [self.foobar_ltd]) + def test_uuid_pk_subquery(self): + u = UUIDPK.objects.create() + UUID.objects.create(uuid_fk=u) + qs = UUIDPK.objects.filter(id__in=Subquery(UUID.objects.values('uuid_fk__id'))) + self.assertCountEqual(qs, [u]) + def test_nested_subquery(self): inner = Company.objects.filter(point_of_contact=OuterRef('pk')) outer = Employee.objects.annotate(is_point_of_contact=Exists(inner)) |
