[Django] #12583: Postgresql backend uses implicit text casts for case insensitive operators

12 views
Skip to first unread message

Django

unread,
Jan 11, 2010, 4:22:46 PM1/11/10
to djang...@holovaty.com, django-...@googlegroups.com
#12583: Postgresql backend uses implicit text casts for case insensitive operators
----------------------------------------------+-----------------------------
Reporter: Ubercore | Owner: nobody
Status: new | Milestone:
Component: Database layer (models, ORM) | Version: SVN
Keywords: postgresql cast case-insensitive | Stage: Unreviewed
Has_patch: 0 |
----------------------------------------------+-----------------------------
In django.db.backends.postgresql.operations.DatabaseOperations, a case
insensitive lookup produces

{{{
UPPER(%s::text)
}}}

as the lookup cast sql.

In django.db.backends.postgresql.DatabaseWrapper.operators, a case
insensitive lookup produces

{{{
UPPER(%s)
}}}

Since Postgres 8.3 removed implicit casts, all operators should use
::text. Not doing so breaks lookups that use a type other than text:

{{{
AModel.objects.filter(col1__iexact=4)
}}}

--
Ticket URL: <http://code.djangoproject.com/ticket/12583>
Django <http://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Jan 11, 2010, 4:45:21 PM1/11/10
to djang...@holovaty.com, django-...@googlegroups.com
#12583: Postgresql backend uses implicit text casts for case insensitive operators
---------------------------------------------------+------------------------
Reporter: Ubercore | Owner: nobody
Status: new | Milestone:
Component: Database layer (models, ORM) | Version: SVN
Resolution: | Keywords: postgresql cast case-insensitive
Stage: Unreviewed | Has_patch: 1
Needs_docs: 0 | Needs_tests: 0
Needs_better_patch: 0 |
---------------------------------------------------+------------------------
Changes (by Ubercore):

* needs_better_patch: => 0
* has_patch: 0 => 1
* needs_tests: => 0
* needs_docs: => 0

--
Ticket URL: <http://code.djangoproject.com/ticket/12583#comment:1>

Django

unread,
Jan 13, 2010, 10:23:21 AM1/13/10
to djang...@holovaty.com, django-...@googlegroups.com
#12583: Postgresql backend uses implicit text casts for case insensitive operators
---------------------------------------------------+------------------------
Reporter: Ubercore | Owner: Ubercore
Status: assigned | Milestone:
Component: Database layer (models, ORM) | Version: SVN
Resolution: | Keywords: postgresql cast case-insensitive
Stage: Unreviewed | Has_patch: 1
Needs_docs: 0 | Needs_tests: 0
Needs_better_patch: 0 |
---------------------------------------------------+------------------------
Changes (by Ubercore):

* owner: nobody => Ubercore
* status: new => assigned

--
Ticket URL: <http://code.djangoproject.com/ticket/12583#comment:2>

Django

unread,
Jan 13, 2010, 10:25:35 AM1/13/10
to djang...@holovaty.com, django-...@googlegroups.com
#12583: Postgresql backend uses implicit text casts for case insensitive operators
---------------------------------------------------+------------------------
Reporter: Ubercore | Owner: Ubercore
Status: assigned | Milestone:
Component: Database layer (models, ORM) | Version: SVN
Resolution: | Keywords: postgresql cast case-insensitive
Stage: Ready for checkin | Has_patch: 1
Needs_docs: 0 | Needs_tests: 0
Needs_better_patch: 0 |
---------------------------------------------------+------------------------
Changes (by Ubercore):

* stage: Unreviewed => Ready for checkin

--
Ticket URL: <http://code.djangoproject.com/ticket/12583#comment:3>

Django

unread,
Jan 13, 2010, 10:26:30 AM1/13/10
to djang...@holovaty.com, django-...@googlegroups.com
#12583: Postgresql backend uses implicit text casts for case insensitive operators
---------------------------------------------------+------------------------
Reporter: Ubercore | Owner: Ubercore
Status: assigned | Milestone:
Component: Database layer (models, ORM) | Version: SVN
Resolution: | Keywords: postgresql cast case-insensitive
Stage: Accepted | Has_patch: 1
Needs_docs: 0 | Needs_tests: 0
Needs_better_patch: 0 |
---------------------------------------------------+------------------------
Changes (by Ubercore):

* stage: Ready for checkin => Accepted

--
Ticket URL: <http://code.djangoproject.com/ticket/12583#comment:4>

Django

unread,
Feb 1, 2010, 9:05:28 AM2/1/10
to djang...@holovaty.com, django-...@googlegroups.com
#12583: Postgresql backend uses implicit text casts for case insensitive operators
---------------------------------------------------+------------------------
Reporter: Ubercore | Owner: Ubercore
Status: assigned | Milestone: 1.2
Component: Database layer (models, ORM) | Version: SVN
Resolution: | Keywords: postgresql cast case-insensitive
Stage: Accepted | Has_patch: 1
Needs_docs: 0 | Needs_tests: 0
Needs_better_patch: 0 |
---------------------------------------------------+------------------------
Changes (by Ubercore):

* milestone: => 1.2

Comment:

Changing to 1.2 milestone, as this seems like a low impact bugfix.

--
Ticket URL: <http://code.djangoproject.com/ticket/12583#comment:5>

Django

unread,
Mar 8, 2010, 5:21:27 AM3/8/10
to djang...@holovaty.com, django-...@googlegroups.com
#12583: Postgresql backend uses implicit text casts for case insensitive operators
---------------------------------------------------+------------------------
Reporter: Ubercore | Owner: Ubercore
Status: assigned | Milestone:
Component: Database layer (models, ORM) | Version: SVN
Resolution: | Keywords: postgresql cast case-insensitive
Stage: Accepted | Has_patch: 1
Needs_docs: 0 | Needs_tests: 0
Needs_better_patch: 0 |
---------------------------------------------------+------------------------
Changes (by ubernostrum):

* milestone: 1.2 =>

Comment:

Since `iexact` doesn't make sense for non-text lookups, I don't think this
is critical enough to be on the 1.2 milestone right now.

--
Ticket URL: <http://code.djangoproject.com/ticket/12583#comment:6>

Django

unread,
Apr 2, 2011, 1:49:10 AM4/2/11
to djang...@holovaty.com, django-...@googlegroups.com
#12583: Postgresql backend uses implicit text casts for case insensitive operators
-------------------------------------+-------------------------------------
Reporter: Ubercore | Owner: Ubercore
Type: Bug | Status: assigned
Milestone: | Component: Database layer
Version: SVN | (models, ORM)
Resolution: | Severity: Normal
Triage Stage: Accepted | Keywords: postgresql cast case-
Needs documentation: 0 | insensitive
Patch needs improvement: 0 | Has patch: 1
| Needs tests: 0
-------------------------------------+-------------------------------------
Changes (by mattmcc):

* type: => Bug
* severity: => Normal


--
Ticket URL: <http://code.djangoproject.com/ticket/12583#comment:7>

Django

unread,
Apr 16, 2011, 2:02:25 AM4/16/11
to django-...@googlegroups.com
#12583: Postgresql backend uses implicit text casts for case insensitive operators
-------------------------------------+-------------------------------------
Reporter: Ubercore | Owner: Ubercore
Type: Bug | Status: assigned
Milestone: | Component: Database layer
Version: SVN | (models, ORM)
Resolution: | Severity: Normal
Triage Stage: Accepted | Keywords: postgresql cast case-
Needs documentation: 0 | insensitive
Patch needs improvement: 1 | Has patch: 1
| Needs tests: 0
-------------------------------------+-------------------------------------
Changes (by julien):

* needs_better_patch: 0 => 1


Comment:

The tests would need to be rewritten using unittests since this is now
Django's preferred way.

--
Ticket URL: <http://code.djangoproject.com/ticket/12583#comment:8>

Reply all
Reply to author
Forward
0 new messages