﻿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
26071	IN queries inside conditional case expressions crashes on django 1.8	Alberto Avila	nobody	"When making a IN filter expression inside a conditional case expression django crashes with the following exception:

 AttributeError: 'SubqueryConstraint' object has no attribute 'lhs'

The stacktrace looks like:

    lib/python2.7/site-packages/django/db/models/query.py line 794 in annotate
      obj.query.add_annotation(annotation, alias, is_summary=False)
    lib/python2.7/site-packages/django/db/models/sql/query.py line 983 in add_annotation
      summarize=is_summary)
    lib/python2.7/site-packages/django/db/models/aggregates.py line 21 in resolve_expression
      if c.source_expressions[0].contains_aggregate and not summarize:
    lib/python2.7/site-packages/django/utils/functional.py line 59 in __get__
      res = instance.__dict__[self.name] = self.func(instance)
    lib/python2.7/site-packages/django/db/models/expressions.py line 179 in contains_aggregate
      if expr and expr.contains_aggregate:
    lib/python2.7/site-packages/django/utils/functional.py line 59 in __get__
      res = instance.__dict__[self.name] = self.func(instance)
    lib/python2.7/site-packages/django/db/models/expressions.py line 179 in contains_aggregate
      if expr and expr.contains_aggregate:
    lib/python2.7/site-packages/django/utils/functional.py line 59 in __get__
      res = instance.__dict__[self.name] = self.func(instance)
    lib/python2.7/site-packages/django/db/models/sql/where.py line 324 in contains_aggregate
      return self._contains_aggregate(self)
    lib/python2.7/site-packages/django/db/models/sql/where.py line 320 in _contains_aggregate
      return any(cls._contains_aggregate(c) for c in obj.children)
    lib/python2.7/site-packages/django/db/models/sql/where.py line 320 in <genexpr>
      return any(cls._contains_aggregate(c) for c in obj.children)
    lib/python2.7/site-packages/django/db/models/sql/where.py line 319 in _contains_aggregate
      return getattr(obj.lhs, 'contains_aggregate', False) or getattr(obj.rhs, 'contains_aggregate', False)
   AttributeError: 'SubqueryConstraint' object has no attribute 'lhs'

This error is already fixed on django 1.9 branch. The problem was fixed with this commit:

https://github.com/django/django/commit/afe0bb7b13bb8dc4370f32225238012c873b0ee3#diff-73bc0dcb1a1c931adcf1d344abca22ffR180

I'll create a PR with the changes from that commit that fixes the issue, not sure if the entire commit can be (or should be) backported to 1.8"	Bug	new	Database layer (models, ORM)	1.8	Normal				Unreviewed	0	0	0	0	0	0
