[Django] #20271: PostgreSQL error: No operator matches the given name and argument type(s). You might need to add explicit type casts.

2,085 views
Skip to first unread message

Django

unread,
Apr 16, 2013, 3:24:07 PM4/16/13
to django-...@googlegroups.com
#20271: PostgreSQL error: No operator matches the given name and argument type(s).
You might need to add explicit type casts.
----------------------------------------------+----------------------------
Reporter: arctelix@… | Owner: nobody
Type: Bug | Status: new
Component: Database layer (models, ORM) | Version: 1.4
Severity: Normal | Keywords: postgresql, pk
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
----------------------------------------------+----------------------------
It seems this error is still around!

Traceback (most recent call last):

File "/app/.heroku/src/django-tastypie/tastypie/resources.py", line 202,
in wrapper
response = callback(request, *args, **kwargs)

File "/app/.heroku/src/django-tastypie/tastypie/resources.py", line 441,
in dispatch_list
return self.dispatch('list', request, **kwargs)

File "/app/.heroku/src/django-tastypie/tastypie/resources.py", line 473,
in dispatch
response = method(request, **kwargs)

File "/app/.heroku/src/django-tastypie/tastypie/resources.py", line
1244, in get_list
to_be_serialized = paginator.page()

File "/app/.heroku/src/django-tastypie/tastypie/paginator.py", line 186,
in page
count = self.get_count()

File "/app/.heroku/src/django-tastypie/tastypie/paginator.py", line 118,
in get_count
return self.objects.count()

File "/app/.heroku/python/lib/python2.7/site-
packages/django/db/models/query.py", line 351, in count
return self.query.get_count(using=self.db)

File "/app/.heroku/python/lib/python2.7/site-
packages/django/db/models/sql/query.py", line 418, in get_count
number = obj.get_aggregation(using=using)[None]

File "/app/.heroku/python/lib/python2.7/site-
packages/django/db/models/sql/query.py", line 384, in get_aggregation
result = query.get_compiler(using).execute_sql(SINGLE)

File "/app/.heroku/python/lib/python2.7/site-
packages/django/db/models/sql/compiler.py", line 818, in execute_sql
cursor.execute(sql, params)

File "/app/.heroku/python/lib/python2.7/site-
packages/django/db/backends/postgresql_psycopg2/base.py", line 52, in
execute
return self.cursor.execute(query, args)

DatabaseError: operator does not exist: integer = text LINE 1: ... INNER
JOIN "django_comments" ON ("pins_pin"."id" = "django_...
^
HINT: No operator matches the given name and argument type(s). You might
need to add explicit type casts.

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

Django

unread,
Apr 16, 2013, 7:19:49 PM4/16/13
to django-...@googlegroups.com
#20271: PostgreSQL error: No operator matches the given name and argument type(s).
You might need to add explicit type casts.
-------------------------------------+-------------------------------------
Reporter: arctelix@… | Owner: nobody
Type: Bug | Status: closed
Component: Database layer | Version: 1.4
(models, ORM) | Resolution: needsinfo
Severity: Normal | Triage Stage:
Keywords: postgresql, pk | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by russellm):

* status: new => closed
* needs_better_patch: => 0
* resolution: => needsinfo
* needs_tests: => 0
* needs_docs: => 0


Comment:

It's difficult to fix "This error" if you don't tell us what "this error"
is. A stack trace by itself doesn't help - we need sample code and/or an
explanation to demonstrate how to reproduce the problem.

--
Ticket URL: <https://code.djangoproject.com/ticket/20271#comment:1>

Django

unread,
Apr 16, 2013, 7:59:43 PM4/16/13
to django-...@googlegroups.com
#20271: PostgreSQL error: No operator matches the given name and argument type(s).
You might need to add explicit type casts.
-------------------------------------+-------------------------------------
Reporter: arctelix@… | Owner: nobody

Type: Bug | Status: closed
Component: Database layer | Version: 1.4
(models, ORM) | Resolution: needsinfo
Severity: Normal | Triage Stage:
Keywords: postgresql, pk | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by arctelix@…):

The issue seems identical to https://code.djangoproject.com/ticket/6523.
I am using the latest build of tastypie & using heroku postgreSQL The code
that generates the error is in one of my my api resources. The error is
generated by the line:


{{{
orm_filters['comments__user__id__exact'] = filters['cmnts']
}}}

In the below code:

{{{
class PinResource(ModelResource):

comments = fields.ToManyField('pinry.api.api.CmntResource',
'comments', full=True, null=True)

def build_filters(self, filters=None):
if filters is None:
filters = {}

orm_filters = super(PinResource, self).build_filters(filters)

if 'cmnts' in filters:
orm_filters['comments__user__id__exact'] = filters['cmnts']

class CmntResource(ModelResource):
user = fields.ToOneField('my.api.api.UserResource', 'user', full=True)
site_id = fields.CharField(attribute = 'site_id')
content_object = GenericForeignKeyField({
Pin: PinResource,
}, 'content_object')
username = fields.CharField(attribute = 'user__username', null=True)
user_id = fields.CharField(attribute = 'user__id', null=True)
}}}

The CommentResource is based on the built in django-comments model. It
apears the error is due to the fact that the object_pk is defined as
models.TextField(_('object ID')) in the model and PostgreSQL requires it
to be cast as in integer since the commented object's pk is an integer.

Let me know if you need more.

--
Ticket URL: <https://code.djangoproject.com/ticket/20271#comment:2>

Django

unread,
Apr 16, 2013, 8:03:10 PM4/16/13
to django-...@googlegroups.com
#20271: PostgreSQL error: No operator matches the given name and argument type(s).
You might need to add explicit type casts.
-------------------------------------+-------------------------------------

Reporter: arctelix@… | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: 1.4
(models, ORM) | Resolution:
Severity: Normal | Triage Stage:
Keywords: postgresql, pk | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by arctelix@…):

* status: closed => new
* resolution: needsinfo =>


Comment:

Also the query set for the comment resource is: queryset =
Comment.objects.all()

--
Ticket URL: <https://code.djangoproject.com/ticket/20271#comment:3>

Django

unread,
Apr 17, 2013, 12:34:54 PM4/17/13
to django-...@googlegroups.com
#20271: PostgreSQL error: No operator matches the given name and argument type(s).
You might need to add explicit type casts.
-------------------------------------+-------------------------------------

Reporter: arctelix@… | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: 1.4
(models, ORM) | Resolution:
Severity: Normal | Triage Stage:
Keywords: postgresql, pk | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by arctelix@…):

I managed to work around the limitation caused by the object_id in django-
comments being a text field as follows:


{{{
if 'cmnts' in filters:
comments = Comment.objects.filter(user__id=filters['cmnts'],
content_type__name = 'my', site_id=settings.SITE_ID
).values_list('object_pk', flat=True)
comments = [int(c) for c in comments]
orm_filters['pk__in'] = comments
}}}

However, it would be great if django implimented someting similar to what
has been done here:
https://github.com/coleifer/django-generic-
aggregation/blob/master/generic_aggregation/utils.py

--
Ticket URL: <https://code.djangoproject.com/ticket/20271#comment:4>

Django

unread,
Jun 16, 2013, 4:11:01 AM6/16/13
to django-...@googlegroups.com
#20271: PostgreSQL error: No operator matches the given name and argument type(s).
You might need to add explicit type casts.
-------------------------------------+-------------------------------------

Reporter: arctelix@… | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: 1.4
(models, ORM) | Resolution:
Severity: Normal | Triage Stage:
Keywords: postgresql, pk | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by akaariai):

Could you produce a test case using standard django models?

I think the problem is that there is need for casting the id to text in
the join condition, so that object_id and the id field's types match. This
doesn't seem to be easy to do, as currently only direct = conditions in
joins are supported.

--
Ticket URL: <https://code.djangoproject.com/ticket/20271#comment:5>

Django

unread,
Jun 16, 2013, 4:44:54 AM6/16/13
to django-...@googlegroups.com
#20271: PostgreSQL error: No operator matches the given name and argument type(s).
You might need to add explicit type casts.
-------------------------------------+-------------------------------------
Reporter: arctelix@… | Owner: nobody
Type: Bug | Status: closed

Component: Database layer | Version: 1.4
(models, ORM) | Resolution: needsinfo

Severity: Normal | Triage Stage:
Keywords: postgresql, pk | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by akaariai):

* status: new => closed

* resolution: => needsinfo


Comment:

I think I will need to close this as needsinfo. I can't reproduce this,
and until there is a way to reproduce this there is little we can do to
fix anything. The other option is to mark this as accepted without any way
to actually do anything to the ticket. So, picking what I assume to be
lesser of the two evils...

--
Ticket URL: <https://code.djangoproject.com/ticket/20271#comment:6>

Django

unread,
Jun 29, 2015, 6:29:04 PM6/29/15
to django-...@googlegroups.com
#20271: PostgreSQL error: No operator matches the given name and argument type(s).
You might need to add explicit type casts.
-------------------------------------+-------------------------------------
Reporter: arctelix@… | Owner: nobody

Type: Bug | Status: closed
Component: Database layer | Version: 1.4
(models, ORM) |
Severity: Normal | Resolution: needsinfo

Keywords: postgresql, pk | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Shanto):

* Attachment "generic_relations_regress-test_textlink_join.patch" added.

Django

unread,
Jun 29, 2015, 6:48:47 PM6/29/15
to django-...@googlegroups.com
#20271: PostgreSQL error: No operator matches the given name and argument type(s).
You might need to add explicit type casts.
-------------------------------------+-------------------------------------
Reporter: arctelix@… | Owner: nobody
Type: Bug | Status: closed
Component: Database layer | Version: master

(models, ORM) |
Severity: Normal | Resolution: needsinfo
Keywords: postgresql, pk | Triage Stage: Accepted

Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by charettes):

* version: 1.4 => master
* stage: Unreviewed => Accepted


Comment:

Managed to reproduce with the provided patch against master.

As Anssi said this looks hard to fix but I'm tentatively accepting.

--
Ticket URL: <https://code.djangoproject.com/ticket/20271#comment:7>

Django

unread,
Jun 29, 2015, 6:48:56 PM6/29/15
to django-...@googlegroups.com
#20271: PostgreSQL error: No operator matches the given name and argument type(s).
You might need to add explicit type casts.
-------------------------------------+-------------------------------------

Reporter: arctelix@… | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: postgresql, pk | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by charettes):

* status: closed => new
* resolution: needsinfo =>


--
Ticket URL: <https://code.djangoproject.com/ticket/20271#comment:8>

Django

unread,
Jun 29, 2015, 7:26:50 PM6/29/15
to django-...@googlegroups.com
#20271: PostgreSQL error: No operator matches the given name and argument type(s).
You might need to add explicit type casts.
-------------------------------------+-------------------------------------

Reporter: arctelix@… | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: postgresql, pk | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Description changed by timgraham:

Old description:

New description:

--

--
Ticket URL: <https://code.djangoproject.com/ticket/20271#comment:9>

Django

unread,
Jun 29, 2015, 7:59:20 PM6/29/15
to django-...@googlegroups.com
#20271: PostgreSQL error: No operator matches the given name and argument type(s).
You might need to add explicit type casts.
-------------------------------------+-------------------------------------

Reporter: arctelix@… | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: postgresql, pk | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Shanto):

* cc: shanto@… (added)


--
Ticket URL: <https://code.djangoproject.com/ticket/20271#comment:10>

Django

unread,
Oct 2, 2015, 6:37:23 PM10/2/15
to django-...@googlegroups.com
#20271: PostgreSQL error: No operator matches the given name and argument type(s).
You might need to add explicit type casts.
-------------------------------------+-------------------------------------
Reporter: arctelix@… | Owner: nobody
Type: Bug | Status: closed

Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution: duplicate

Keywords: postgresql, pk | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by timgraham):

* status: new => closed

* resolution: => duplicate


Comment:

Looks like a duplicate of #16055.

--
Ticket URL: <https://code.djangoproject.com/ticket/20271#comment:11>

Django

unread,
Oct 2, 2015, 6:38:29 PM10/2/15
to django-...@googlegroups.com
#20271: Filtering over generic relations with TextField/CharField object_id gives

PostgreSQL error: No operator matches the given name and argument type(s).
You might need to add explicit type casts.
-------------------------------------+-------------------------------------
Reporter: arctelix@… | Owner: nobody

Type: Bug | Status: closed
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution: duplicate
Keywords: postgresql, pk | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

--
Ticket URL: <https://code.djangoproject.com/ticket/20271#comment:12>

Reply all
Reply to author
Forward
0 new messages