Commit 93cc6dcd authored by Anssi Kääriäinen's avatar Anssi Kääriäinen
Browse files

Fixed #18414 -- qs.exists() for sliced distinct queries

parent 068b1e04
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -431,6 +431,7 @@ class Query(object):

    def has_results(self, using):
        q = self.clone()
        if not q.distinct:
            q.clear_select_clause()
        q.clear_ordering(True)
        q.set_limits(high=1)
+19 −0
Original line number Diff line number Diff line
@@ -1856,6 +1856,25 @@ class ExistsSql(TestCase):
        id, name = connection.ops.quote_name('id'), connection.ops.quote_name('name')
        self.assertTrue(id not in qstr and name not in qstr)

    def test_ticket_18414(self):
        Article.objects.create(name='one', created=datetime.datetime.now())
        Article.objects.create(name='one', created=datetime.datetime.now())
        Article.objects.create(name='two', created=datetime.datetime.now())
        self.assertTrue(Article.objects.exists())
        self.assertTrue(Article.objects.distinct().exists())
        self.assertTrue(Article.objects.distinct()[1:3].exists())
        self.assertFalse(Article.objects.distinct()[1:1].exists())

    @unittest.skipUnless(connection.features.can_distinct_on_fields,
                         'Uses distinct(fields)')
    def test_ticket_18414_distinct_on(self):
        Article.objects.create(name='one', created=datetime.datetime.now())
        Article.objects.create(name='one', created=datetime.datetime.now())
        Article.objects.create(name='two', created=datetime.datetime.now())
        self.assertTrue(Article.objects.distinct('name').exists())
        self.assertTrue(Article.objects.distinct('name')[1:2].exists())
        self.assertFalse(Article.objects.distinct('name')[2:3].exists())


class QuerysetOrderedTests(unittest.TestCase):
    """