Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

fixes #19263 #813

Merged
merged 1 commit into from

2 participants

@biern

No description provided.

@HonzaKral HonzaKral merged commit fc38d6a into from
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Feb 23, 2013
  1. @biern

    fixes #19263

    biern authored
This page is out of date. Refresh to see the latest.
View
4 django/db/models/sql/where.py
@@ -204,6 +204,10 @@ def make_atom(self, child, qn, connection):
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.
View
15 tests/regressiontests/queries/tests.py
@@ -2021,6 +2021,9 @@ def setUp(self):
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 @@ def test_empty_resultset_sql(self):
# 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):
Something went wrong with that request. Please try again.