From e7acd99113dfedee1bfcdadd2f81db96ab01e95d Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Wed, 29 Aug 2018 10:00:15 +0200 Subject: [2.1.x] Fixed #29694 -- Fixed column mismatch crash with QuerySet.values() or values_list() after combining querysets with extra() with union(), difference(), or intersection(). Regression in 0b66c3b442875627fa6daef4ac1e90900d74290b. Backport of 39461a83c33f0cfe719d3b139413d1f5d1e75d5e from master --- django/db/models/sql/compiler.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'django/db/models/sql/compiler.py') diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py index 8b0fd1da46..27b8cc343b 100644 --- a/django/db/models/sql/compiler.py +++ b/django/db/models/sql/compiler.py @@ -411,7 +411,11 @@ class SQLCompiler: # must have the same columns list. Set the selects defined on # the query on all combined queries, if not already set. if not compiler.query.values_select and self.query.values_select: - compiler.query.set_values((*self.query.values_select, *self.query.annotation_select)) + compiler.query.set_values(( + *self.query.extra_select, + *self.query.values_select, + *self.query.annotation_select, + )) parts += (compiler.as_sql(),) except EmptyResultSet: # Omit the empty queryset with UNION and with DIFFERENCE if the -- cgit v1.3