﻿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
32636	"QuerySet.values()/values_list() crashes on a combined queryset ordered by ""extra"" select."	Mariusz Felisiak	David Wobrock	"`QuerySet.values()`/`values_list()` crashed on a combined queryset ordered by ""extra"" select, e.g.
{{{
    def test_union_multiple_models_with_values_list_and_order_by_extra_select_different_fields(self):
        from .models import Celebrity
        reserved_name = ReservedName.objects.create(name='rn1', order=0)
        celebrity = Celebrity.objects.create(name='John Doe')
        qs1 = Celebrity.objects.extra(select={'extra_name': 'greatest_fan_id'})
        qs2 = ReservedName.objects.extra(select={'extra_name': 'name'})
        self.assertSequenceEqual(
            qs1.union(qs2).order_by('extra_name').values_list('pk', flat=True),
            [reserved_name.pk, celebrity.pk],
        )   
}}}

tries to execute:

{{{
SELECT ""queries_celebrity"".""id"", (greatest_fan_id) AS ""__orderbycol2"" FROM ""queries_celebrity""
UNION
SELECT ""queries_reservedname"".""id"", (greatest_fan_id) AS ""__orderbycol2"" FROM ""queries_reservedname""
ORDER BY (2)
}}}

and crashes with:

{{{
======================================================================
ERROR: test_union_multiple_models_with_values_list_and_order_by_extra_select_different_fields (queries.test_qs_combinators.QuerySetSetOperationTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File ""django/django/db/backends/utils.py"", line 84, in _execute
    return self.cursor.execute(sql, params)
  File ""django/django/db/backends/sqlite3/base.py"", line 416, in execute
    return Database.Cursor.execute(self, query, params)
sqlite3.OperationalError: no such column: greatest_fan_id
}}}

It's related with #32627 but it's not a regression in 464a4c0c59277056b5d3c1132ac1b4c6085aee08. It crashes in Django 3.1.X with:
{{{
  File ""django/django/db/models/sql/query.py"", line 1912, in add_fields
    join_info = self.setup_joins(name.split(LOOKUP_SEP), opts, alias, allow_many=allow_m2m)
AttributeError: 'NoneType' object has no attribute 'split'
}}}"	Bug	closed	Database layer (models, ORM)	3.2	Normal	wontfix	queryset combined union difference intersection QuerySet.extra	Iuri de Silvio David Wobrock	Accepted	1	0	0	0	0	0
