﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
10089	Aggregation breaks QuerySet.count() with empty results	Kyle Fox	David Larlet	"When calling `count()` after performing an `__in=[]` filter, a TypeError is thrown (see example).  This is because [http://code.djangoproject.com/browser/django/trunk/django/db/models/sql/query.py#L262 BaseQuery.get_aggregation ] is attempting to zip `query.execute_sql(SINGLE)` (line 301), which can evaluate to None in [http://code.djangoproject.com/browser/django/trunk/django/db/models/sql/query.py#L1914 Line 1933]:

{{{
# Works, even if the filter returns no results.
User.objects.filter(id__in=[1,2,3]).count()
User.objects.filter(id__in=[99,100,101]).count()

# Breaks: Filtering with an empty list and then calling `count()` throws an error.
User.objects.filter(id__in=[]).count()
}}}

I'm not sure how to fix this problem.  I'm assuming that a return value of `None` is the intended behavior of `execute_sql` in this case, and that `get_aggregation` should be make more robust to handle a result of None."		closed	Database layer (models, ORM)	dev		fixed	queryset, execute_sql, aggregation, count, filter, in		Unreviewed	1	0	0	0	0	0
