Opened 2 months ago

Last modified 2 months ago

#35369 closed Bug

MySQL .union().aggregate() raises Unknown Column — at Initial Version

Reported by: DS/Charlie Owned by: nobody
Component: Database layer (models, ORM) Version: 5.0
Severity: Normal Keywords: union, aggregate, mysql
Cc: DS/Charlie Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

`
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, all=False)
"""

(

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

)

"""

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'")
"""

`

Django 4.2.11 and 5.0.4
mysqlclient 2.2.4

all in a clean virtualenv on python 3.12.2

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top