#35369: MySQL .union().aggregate() raises Unknown Column
-------------------------------------+-------------------------------------
               Reporter:             |          Owner:  nobody
  DS/Charlie                         |
                   Type:  Bug        |         Status:  new
              Component:  Database   |        Version:  5.0
  layer (models, ORM)                |       Keywords:
               Severity:  Normal     |  union,aggregate,mysql
           Triage Stage:             |      Has patch:  0
  Unreviewed                         |
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 ```
 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
-- 
Ticket URL: <https://code.djangoproject.com/ticket/35369>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/0107018ed2e60f1f-aef23ac6-5bbe-4940-8574-dee48f03ea36-000000%40eu-central-1.amazonses.com.

Reply via email to