Opened 3 years ago

Last modified 7 months ago

#27808 closed Bug

Nested ArrayField with nullable base field generates invalid SQL — at Version 2

Reported by: Josef Kolář Owned by:
Component: contrib.postgres Version: master
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 Josef Kolář)

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()

and Django generates

INSERT INTO "postgres_tests_nestednullableintegerarraymodel" ("field") VALUES (%s) RETURNING "postgres_tests_nestednullableintegerarraymodel"."id"

with expectable params

([[None, None], [None, None]], )

and 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 (2)

comment:1 Changed 3 years ago by Josef Kolář

Description: modified (diff)

comment:2 Changed 3 years ago by Josef Kolář

Description: modified (diff)
Note: See TracTickets for help on using tickets.
Back to Top