#27808 closed Bug (fixed)
Nested ArrayField with nullable base field generates invalid SQL
Reported by: | Josef Kolář | Owned by: | Hasan Ramezani |
---|---|---|---|
Component: | contrib.postgres | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
When I have model
class NestedNullableIntegerArrayModel(PostgreSQLModel): field = ArrayField(ArrayField(models.IntegerField(null=True)))
and trying to save data
NestedNullableIntegerArrayModel(field=[[None, None], [None, None]]).save()
Django generates
INSERT INTO "postgres_tests_nestednullableintegerarraymodel" ("field") VALUES (%s) RETURNING "postgres_tests_nestednullableintegerarraymodel"."id"
with expectable params
([[None, None], [None, None]], )
but this query fails in postgres on
ERROR: column "field" is of type integer[] but expression is of type text[] LINE 1: ...estednullableintegerarraymodel" ("field") VALUES (ARRAY['{NU... ^ HINT: You will need to rewrite or cast the expression.
But, if I use one of values is not None, model is saved successfully:
NestedNullableIntegerArrayModel(field=[[None, None], [None, 42]]).save()
Is it a problem of Django or I should find problem in psycopg?
Change History (10)
comment:1 by , 8 years ago
Description: | modified (diff) |
---|
comment:2 by , 8 years ago
Description: | modified (diff) |
---|
comment:3 by , 8 years ago
Description: | modified (diff) |
---|
comment:4 by , 8 years ago
Version: | 1.9 → master |
---|
comment:5 by , 8 years ago
Triage Stage: | Unreviewed → Accepted |
---|
comment:6 by , 8 years ago
This is due to following bug in psycopg2 https://github.com/psycopg/psycopg2/issues/325
comment:7 by , 5 years ago
Has patch: | set |
---|---|
Owner: | set to |
Status: | new → assigned |
Seems bug was fixed in psycopg2
. I just added a test case to prove it.
comment:9 by , 5 years ago
Has patch: | unset |
---|---|
Resolution: | → fixed |
Status: | assigned → closed |
Note:
See TracTickets
for help on using tickets.
Not sure if it's a duplicate but it looks related to #24726 at least.