Aggregation breaks QuerySet.count() with empty results
When calling count() after performing an __in=[] filter, a TypeError is thrown (see example). This is because BaseQuery.get_aggregation is attempting to zip query.execute_sql(SINGLE) (line 301), which can evaluate to None in 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.
First naive approach