#35194: Postgres 16.2 with _iexact leads to IndeterminateCollation
-------------------------------------+-------------------------------------
     Reporter:  Aldalen              |                    Owner:  nobody
         Type:  Bug                  |                   Status:  closed
    Component:  Database layer       |                  Version:  5.0
  (models, ORM)                      |
     Severity:  Normal               |               Resolution:  needsinfo
     Keywords:                       |             Triage Stage:
                                     |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Changes (by Mariusz Felisiak):

 * owner:  (none) => nobody
 * resolution:   => needsinfo
 * status:  new => closed
 * component:  contrib.postgres => Database layer (models, ORM)
 * summary:
     Postgres 16.2 with _iexact leads to
     psycopg2.errors.IndeterminateCollation
     => Postgres 16.2 with _iexact leads to IndeterminateCollation

Comment:

 Thanks for the report, this looks like a bug in PostgreSQL. I couldn't
 find anything related with this change in PostgreSQL 16.2 release notes.
 I've checked a few ways to define that kind of expression in the
 `GeneratedField` and it seems to be related to calling `UPPER()` on
 strings:
 - `models.GeneratedField(expression=models.Q(test__iexact='yes'),
 output_field=models.BooleanField(), db_persist=True)` crashes 💥
   - SQL:
 {{{#!sql
 "test_gen" boolean GENERATED ALWAYS AS (UPPER("test"::text) =
 UPPER('yes')) STORED
 }}}
 - `models.GeneratedField(expression=lookups.Exact(Upper("test"), "YES"),
 output_field=models.BooleanField(), db_persist=True)` works ✅
   - SQL:
 {{{#!sql
 "test_gen" boolean GENERATED ALWAYS AS (UPPER("test") = ('YES')) STORED
 }}}
 Removing `::text` doesn't change anything, it also crashes 💥:
 {{{#!sql
 "test_gen" boolean GENERATED ALWAYS AS (UPPER("test") = UPPER('yes'))
 STORED
 }}}

 Please reopen the ticket if you provide details that this is an
 intentional behavior change in PostgreSQL.
-- 
Ticket URL: <https://code.djangoproject.com/ticket/35194#comment:3>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/0107018da74eb99f-bc660763-acc3-4b5e-8a9b-cffd15e8a9bc-000000%40eu-central-1.amazonses.com.

Reply via email to