Commit 2b76f19f authored by Marcin Biernat's avatar Marcin Biernat
Browse files

fixes #19263

parent 7ec2a21b
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -204,6 +204,10 @@ class WhereNode(tree.Node):
                raise EmptyResultSet
            if extra:
                return ('%s IN %s' % (field_sql, extra), params)
            if not params:
                # Empty params would generate invalid sql in subquery
                raise EmptyResultSet

            max_in_list_size = connection.ops.max_in_list_size()
            if max_in_list_size and len(params) > max_in_list_size:
                # Break up the params list into an OR of manageable chunks.
+15 −0
Original line number Diff line number Diff line
@@ -2021,6 +2021,9 @@ class WeirdQuerysetSlicingTests(BaseQuerysetTest):
        Article.objects.create(name='three', created=datetime.datetime.now())
        Article.objects.create(name='four', created=datetime.datetime.now())

        food = Food.objects.create(name='spam')
        Eaten.objects.create(meal='spam with eggs', food=food)

    def test_tickets_7698_10202(self):
        # People like to slice with '0' as the high-water mark.
        self.assertQuerysetEqual(Article.objects.all()[0:0], [])
@@ -2036,6 +2039,18 @@ class WeirdQuerysetSlicingTests(BaseQuerysetTest):
        # ticket #12192
        self.assertNumQueries(0, lambda: list(Number.objects.all()[1:1]))

    def test_empty_sliced_subquery(self):
        # ticket #19263 - testing subqueries
        self.assertEqual(
            Eaten.objects.filter(food__in=Food.objects.all()[0:0]).count(),
            0)

    def test_empty_sliced_subquery_exclude(self):
        # ticket #19263 - testing subqueries
        self.assertEqual(
            Eaten.objects.exclude(food__in=Food.objects.all()[0:0]).count(),
            1)


class EscapingTests(TestCase):
    def test_ticket_7302(self):