class BugModel(models.Model):
foo = models.CharField(max_length=255)
class BugTestCase(TestCase):
def test_bug(self):
a = BugModel.objects.all()
b = BugModel.objects.all()
ab = a.union(b) # does NOT happen with `a | b`
"""
(
SELECT `bugapp_bugmodel`.`id` AS `col1`, `bugapp_bugmodel`.`foo` AS `col2`
FROM `bugapp_bugmodel`
) UNION (
SELECT `bugapp_bugmodel`.`id` AS `col1`, `bugapp_bugmodel`.`foo` AS `col2`
FROM `bugapp_bugmodel`
)
"""
q = ab.aggregate(max=Max("foo"))
"""
SELECT MAX(`__col1`)
FROM (
(
SELECT `bugapp_bugmodel`.`id` AS `col1`, `bugapp_bugmodel`.`foo` AS `col2`
FROM `bugapp_bugmodel`
) UNION (
SELECT `bugapp_bugmodel`.`id` AS `col1`, `bugapp_bugmodel`.`foo` AS `col2`
FROM `bugapp_bugmodel`
)
) subquery
Traceback (most recent call last):
File "/private/tmp/djangobug/venv/lib/python3.12/site-packages/django/db/backends/utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/private/tmp/djangobug/venv/lib/python3.12/site-packages/django/db/backends/mysql/base.py", line 75, in execute
return self.cursor.execute(query, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/private/tmp/djangobug/venv/lib/python3.12/site-packages/MySQLdb/cursors.py", line 179, in execute
res = self._query(mogrified_query)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/private/tmp/djangobug/venv/lib/python3.12/site-packages/MySQLdb/cursors.py", line 330, in _query
db.query(q)
File "/private/tmp/djangobug/venv/lib/python3.12/site-packages/MySQLdb/connections.py", line 261, in query
_mysql.connection.query(self, query)
MySQLdb.OperationalError: (1054, "Unknown column '__col1' in 'field list'")
"""
self.assertIsNone(q['max'])
Django 4.2.11 and 5.0.4
mysqlclient 2.2.4
all in a clean virtualenv on python 3.12.2
Per the documentation
Closing as duplicate of #28519 and #32032.