From f48bc7c3dbd204eefb3c19016b1e4906ac26bee3 Mon Sep 17 00:00:00 2001 From: Matthew Schinckel Date: Sat, 25 Feb 2017 21:11:56 +1030 Subject: Fixed #27862 -- Fixed incorrectly quoted table aliases in Subquery SQL. Add aliases from resolved querysets to the parent query's external aliases to prevent those aliases from being quoted. Thanks to Vasily Stepanov for the report and Tim Graham for the review. --- django/db/models/expressions.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'django') diff --git a/django/db/models/expressions.py b/django/db/models/expressions.py index 8361e42d20..ed57599a15 100644 --- a/django/db/models/expressions.py +++ b/django/db/models/expressions.py @@ -940,10 +940,15 @@ class Subquery(Expression): def resolve(child): if hasattr(child, 'resolve_expression'): - return child.resolve_expression( + resolved = child.resolve_expression( query=query, allow_joins=allow_joins, reuse=reuse, summarize=summarize, for_save=for_save, ) + # Add table alias to the parent query's aliases to prevent + # quoting. + if hasattr(resolved, 'alias'): + clone.queryset.query.external_aliases.add(resolved.alias) + return resolved return child resolve_all(clone.queryset.query.where) -- cgit v1.3