Aggregates (Min, Max) for CharField fails with Postgresql
|Reported by:||wejaay||Owned by:||Greg Wogan-Browne|
|Component:||Database layer (models, ORM)||Version:||master|
|Severity:||Normal||Keywords:||aggregate, postgresql, charfield|
|Has patch:||yes||Needs documentation:||no|
|Needs tests:||yes||Patch needs improvement:||yes|
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 http://code.djangoproject.com/browser/django/trunk/django/db/backends/__init__.py?rev=9742, 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 http://code.djangoproject.com/browser/django/trunk/django/db/backends/__init__.py, 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.
Change History (7)
comment:1 Changed 6 years ago by
|Patch needs improvement:||set|
|Triage Stage:||Unreviewed → Accepted|
comment:2 Changed 6 years ago by
|Owner:||changed from nobody to Greg Wogan-Browne|
|Status:||new → assigned|
|Version:||1.2 → SVN|