From 58c6d0209d71872f0682d478921db1e00496e16c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anssi=20K=C3=A4=C3=A4ri=C3=A4inen?= Date: Mon, 19 Aug 2013 16:24:45 +0300 Subject: [PATCH] Fixed #12807 -- EmptyResultSet ORed condition The EmptyResultSet wasn't treated correctly so the end results was incorrect, too. The bug had been already fixed in master so only tests added. --- tests/queries/tests.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/queries/tests.py b/tests/queries/tests.py index a3558a06d4..4d9ffb353f 100644 --- a/tests/queries/tests.py +++ b/tests/queries/tests.py @@ -2952,6 +2952,16 @@ class Ticket20788Tests(TestCase): self.assertQuerysetEqual( sentences_not_in_pub, [book2], lambda x: x) +class Ticket12807Tests(TestCase): + def test_ticket_12807(self): + p1 = Paragraph.objects.create() + p2 = Paragraph.objects.create() + # The ORed condition below should have no effect on the query - the + # ~Q(pk__in=[]) will always be True. + qs = Paragraph.objects.filter((Q(pk=p2.pk) | ~Q(pk__in=[])) & Q(pk=p1.pk)) + self.assertQuerysetEqual(qs, [p1], lambda x: x) + + class RelatedLookupTypeTests(TestCase): def test_wrong_type_lookup(self): oa = ObjectA.objects.create(name="oa")