SubqueryConstraint doesn't relabel aliases correctly
|Reported by:||Anssi Kääriäinen||Owned by:||nobody|
|Component:||Database layer (models, ORM)||Version:||master|
|Has patch:||no||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
SubqueryConstraint (added in #19385) doesn't correctly handle relabeling of aliases. The problem is that SubqueryConstraint defines relabeled_clone(), but due to SubqueryConstraint being added directly to wherenode as children, not part of a children, the relabeled_clone() isn't ever called.
To trigger this bug one needs to do for example a double
__in lookup (that is, lookup with
__in=qs where the qs has a
__in=qs2 lookup itself), or
__in=qs + combine of query.
This can be fixed by adding clone() and relabel_aliases() methods to SubqueryConstraint.
This bug is present in 1.6-alpha-1.