Opened 3 years ago

Closed 16 months ago

Last modified 16 months ago

#14879 closed Bug (worksforme)

Aggregates (Min, Max) for CharField fails with Postgresql

Reported by: wejaay Owned by: wogan
Component: Database layer (models, ORM) Version: master
Severity: Normal Keywords: aggregate, postgresql, charfield
Cc: mike@… Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: yes Patch needs improvement: yes
Easy pickings: no UI/UX: no


If you try to do aggregate on a CharField using with Min or Max, it works fine in sqlite3 but fails in PostgresSQL. I have version 9.0 of postgres and latest dev version of django.

The error occurs because Django is trying to convert the string to float in, line number 399.
Thats the version where this code was first introduced and as far as I can tell its been broken all the way from then to most recent version, line 553.

One fix that seems to work is to change line 549 from elif internal_type in ('DateField', 'DateTimeField', 'TimeField'): to elif internal_type in ('DateField', 'DateTimeField', 'TimeField', 'CharField'):

I dont know if that has other side effects. If I am doing something wrong, please let me know.

Attachments (0)

Change History (7)

comment:1 Changed 3 years ago by russellm

  • Has patch set
  • Needs documentation unset
  • Needs tests set
  • Patch needs improvement set
  • Triage Stage changed from Unreviewed to Accepted

Marking has-patch because there is a proposed fix, but it needs tests, and needs to be turned into a diff.

comment:2 Changed 3 years ago by wogan

  • Owner changed from nobody to wogan
  • Status changed from new to assigned
  • Version changed from 1.2 to SVN

comment:3 Changed 3 years ago by jaddison

  • Severity set to Normal
  • Type set to Bug

comment:4 Changed 2 years ago by aaugustin

  • UI/UX unset

Change UI/UX from NULL to False.

comment:5 Changed 2 years ago by aaugustin

  • Easy pickings unset

Change Easy pickings from NULL to False.

comment:6 Changed 21 months ago by carbonXT

  • Cc mike@… added

comment:7 Changed 16 months ago by slurms

  • Resolution set to worksforme
  • Status changed from assigned to closed

I can't reproduce this on Django 1.5b2 and PostgreSQL 9.1.7. It appears convert_values was changed in commit 12a96bfa263d514884ef11009913b2f8bb163472 and this would have fixed the issue.

    In [2]: User.objects.all().aggregate(Max('username'))
    Out[2]: {'username__max': u'test'}
Last edited 16 months ago by slurms (previous) (diff)

Add Comment

Modify Ticket

Change Properties
<Author field>
as closed
as The resolution will be set. Next status will be 'closed'
The resolution will be deleted. Next status will be 'new'

E-mail address and user name can be saved in the Preferences.

Note: See TracTickets for help on using tickets.