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