[Django] #29171: PostgreSQL specific model fields - ArrayField: Type Mismatch

10 views
Skip to first unread message

Django

unread,
Feb 28, 2018, 9:37:04 PM2/28/18
to django-...@googlegroups.com
#29171: PostgreSQL specific model fields - ArrayField: Type Mismatch
-------------------------------------+-------------------------------------
Reporter: Pal | Owner: nobody
Type: | Status: new
Uncategorized |
Component: Database | Version: 2.0
layer (models, ORM) | Keywords: Postgres Array
Severity: Normal | Query
Triage Stage: | Has patch: 0
Unreviewed |
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------+-------------------------------------
When you define ArrayField as models.CharField, the query fails. But if
you define ArrayField as models.TextField, the query succeeds.

Not Working: ArrayField(models.CharField(max_length=200), blank=True)

Working: ArrayField(models.TextField(blank=True))

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

Django

unread,
Feb 28, 2018, 9:38:01 PM2/28/18
to django-...@googlegroups.com
#29171: PostgreSQL specific model fields - ArrayField: Type Mismatch
-------------------------------------+-------------------------------------
Reporter: Pal | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: 2.0
(models, ORM) |
Severity: Normal | Resolution:
Keywords: Postgres Array | Triage Stage:
Query | Unreviewed
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Pal):

* type: Uncategorized => Bug


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

Django

unread,
Feb 28, 2018, 11:03:55 PM2/28/18
to django-...@googlegroups.com
#29171: PostgreSQL specific model fields - ArrayField: Type Mismatch
-------------------------------------+-------------------------------------
Reporter: Pal | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: 2.0
(models, ORM) |
Severity: Normal | Resolution:
Keywords: Postgres Array | Triage Stage:
Query | Unreviewed
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Simon Charette):

Could you provide a traceback and more details about how ''it fails''?

Does it happen when you define a model using `ArrayField(CharField())`,
when performing a query annotation?

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

Django

unread,
Mar 1, 2018, 10:27:57 AM3/1/18
to django-...@googlegroups.com
#29171: PostgreSQL specific model fields - ArrayField: Type Mismatch
-------------------------------------+-------------------------------------
Reporter: Pal | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: 2.0
(models, ORM) |
Severity: Normal | Resolution:
Keywords: Postgres Array | Triage Stage:
Query | Unreviewed
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Pal):

Replying to [comment:2 Simon Charette]:


> Could you provide a traceback and more details about how ''it fails''?
>
> Does it happen when you define a model using `ArrayField(CharField())`,
when performing a query annotation?

Yes. When I defined the model as shown in the documentation at
https://docs.djangoproject.com/en/2.0/ref/contrib/postgres/fields
/#querying-arrayfield , the query fails. But if I change models.CharField
to models.TextField, the query succeeds.

Here are the error statements from apache2 error log:
psycopg2.ProgrammingError: operator does not exist: text[] @> character
varying[]
django.db.utils.ProgrammingError: operator does not exist: text[] @>
character varying[]

May be we need to change the documentation to reflect the change above.
Thanks.

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

Django

unread,
Mar 1, 2018, 12:16:55 PM3/1/18
to django-...@googlegroups.com
#29171: PostgreSQL specific model fields - ArrayField: Type Mismatch
-------------------------------------+-------------------------------------
Reporter: Pal | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: 2.0
(models, ORM) |
Severity: Normal | Resolution:
Keywords: Postgres Array | Triage Stage:
Query | Unreviewed
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by felixxm):

* cc: felixxm (added)


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

Django

unread,
Mar 1, 2018, 1:45:10 PM3/1/18
to django-...@googlegroups.com
#29171: PostgreSQL specific model fields - ArrayField: Type Mismatch
-------------------------------------+-------------------------------------
Reporter: Pal | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: 2.0
(models, ORM) |
Severity: Normal | Resolution:
Keywords: Postgres Array | Triage Stage:
Query | Unreviewed
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Tim Graham):

Please show the model and the query. Perhaps you could write it as a test
for `tests/postgres_tests/test_array.py` using `CharArrayModel`.

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

Django

unread,
Mar 4, 2018, 7:06:27 PM3/4/18
to django-...@googlegroups.com
#29171: PostgreSQL specific model fields - ArrayField: Type Mismatch
-------------------------------------+-------------------------------------
Reporter: Pal | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: 2.0
(models, ORM) |
Severity: Normal | Resolution:
Keywords: Postgres Array | Triage Stage:
Query | Unreviewed
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Pal):

Replying to [comment:5 Tim Graham]:


> Please show the model and the query. Perhaps you could write it as a
test for `tests/postgres_tests/test_array.py` using `CharArrayModel`.

One thing I want to mention is that this table was already created in
Postgres and I am adding that to the models.py and as I said if I define
as ArrayField(models.CharField...) it does not work where as
ArrayField(models.TextField...) works. So someone can test and verify
this. Thanks.

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

Django

unread,
Mar 5, 2018, 9:24:10 AM3/5/18
to django-...@googlegroups.com
#29171: PostgreSQL specific model fields - ArrayField: Type Mismatch
-------------------------------------+-------------------------------------
Reporter: Pal | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: 2.0
(models, ORM) |
Severity: Normal | Resolution:
Keywords: Postgres Array | Triage Stage:
Query | Unreviewed
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Tim Graham):

I'm still not sure we have enough details to reproduce the issue. What
does the SQL for the table look like, what does your model look like, and
what does the failing QuerySet look like?

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

Django

unread,
Mar 11, 2018, 6:42:58 PM3/11/18
to django-...@googlegroups.com
#29171: PostgreSQL specific model fields - ArrayField: Type Mismatch
-------------------------------------+-------------------------------------
Reporter: Pal | Owner: nobody
Type: Bug | Status: closed

Component: Database layer | Version: 2.0
(models, ORM) | Resolution:
Severity: Normal | worksforme

Keywords: Postgres Array | Triage Stage:
Query | Unreviewed
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Pal):

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


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

Reply all
Reply to author
Forward
0 new messages