summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAnssi Kääriäinen <akaariai@gmail.com>2013-05-27 11:29:43 +0300
committerAnssi Kääriäinen <akaariai@gmail.com>2013-05-27 12:25:29 +0300
commitd467e117856a7fa6da5e90471144aaa82d822065 (patch)
tree317cbe65e80dd5260e4b47526ba6f6ad15252144 /tests
parentae71e3134e87e4cb1631c4d85462ee76116774db (diff)
Fixed #20507 -- SubqueryConstraint alias relabeling
The SubqueryConstraint defined relabeled_clone(), but that was never called. Instead there is now clone() and relabel_aliases() methods for SubqueryConstraint. A related problem was that SubqueryConstraint didn't correctly use quote_name_unless_alias() of the outer query. This resulted in failures when running under PostgreSQL.
Diffstat (limited to 'tests')
-rw-r--r--tests/queries/tests.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/tests/queries/tests.py b/tests/queries/tests.py
index 68a06abb49..2d6fc0b008 100644
--- a/tests/queries/tests.py
+++ b/tests/queries/tests.py
@@ -17,7 +17,7 @@ from django.utils import unittest
from django.utils.datastructures import SortedDict
from .models import (Annotation, Article, Author, Celebrity, Child, Cover,
- Detail, DumbCategory, ExtraInfo, Fan, Item, LeafA, LoopX, LoopZ,
+ Detail, DumbCategory, ExtraInfo, Fan, Item, LeafA, Join, LeafB, LoopX, LoopZ,
ManagedModel, Member, NamedCategory, Note, Number, Plaything, PointerA,
Ranking, Related, Report, ReservedName, Tag, TvChef, Valid, X, Food, Eaten,
Node, ObjectA, ObjectB, ObjectC, CategoryItem, SimpleCategory,
@@ -2827,3 +2827,17 @@ class ValuesSubqueryTests(TestCase):
self.assertQuerysetEqual(
Order.objects.filter(items__in=OrderItem.objects.values_list('status')),
[o1.pk], lambda x: x.pk)
+
+class DoubleInSubqueryTests(TestCase):
+ def test_double_subquery_in(self):
+ lfa1 = LeafA.objects.create(data='foo')
+ lfa2 = LeafA.objects.create(data='bar')
+ lfb1 = LeafB.objects.create(data='lfb1')
+ lfb2 = LeafB.objects.create(data='lfb2')
+ Join.objects.create(a=lfa1, b=lfb1)
+ Join.objects.create(a=lfa2, b=lfb2)
+ leaf_as = LeafA.objects.filter(data='foo').values_list('pk', flat=True)
+ joins = Join.objects.filter(a__in=leaf_as).values_list('b__id', flat=True)
+ qs = LeafB.objects.filter(pk__in=joins)
+ self.assertQuerysetEqual(
+ qs, [lfb1], lambda x: x)