#35311: Addindex operation generates wrong sql code for Postgresql GinIndex
-------------------------------------+-------------------------------------
     Reporter:  Pierre Juhen         |                    Owner:  nobody
         Type:  Bug                  |                   Status:  closed
    Component:  Database layer       |                  Version:  5.0
  (models, ORM)                      |
     Severity:  Normal               |               Resolution:  duplicate
     Keywords:  postgresql           |             Triage Stage:
  migration                          |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Changes (by Tim Graham):

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


Old description:

> Hi,
>
> I created a Gin Index using :
>
> ''GinIndex(OpClass(Lower('title'),      name='gin_trgm_ops'),
> name="name_gin_trgm_title_affaire"),''
>
> makemigrations generates the following code :
>
> ''migrations.AddIndex(
>            '' model_name='affaire',
> index=django.contrib.postgres.indexes.GinIndex(django.contrib.postgres.indexes.OpClass(django.db.models.functions.text.Lower('title'),
> name='gin_trgm_ops'), name='name_gin_trgm_title_affaire'),''
>         ),''
>
> SQLMIGRATE generates a wrong code :
>
> ''CREATE INDEX "name_gin_trgm_title_affaire" ON "affaires_affaire" USING
> gin ((LOWER("title"), name=gin_trgm_ops));''
>
> Instead of (too many parenthesis) :
>
> ''CREATE INDEX "name_gin_trgm_title_affaire" ON "affaires_affaire" USING
> gin (LOWER("title"),  name=gin_trgm_ops);''
>
> There is a manual workaround, but its annoying.
>
> Thank you.
>
> Regards

New description:

 Hi,

 I created a Gin Index using :

 {{{
 GinIndex(OpClass(Lower('title'),      name='gin_trgm_ops'),
 name="name_gin_trgm_title_affaire"),'
 }}}

 makemigrations generates the following code :

 {{{
 migrations.AddIndex(
            '' model_name='affaire',
 
index=django.contrib.postgres.indexes.GinIndex(django.contrib.postgres.indexes.OpClass(django.db.models.functions.text.Lower('title'),
 name='gin_trgm_ops'), name='name_gin_trgm_title_affaire'),''
         ),''
 }}}
 SQLMIGRATE generates a wrong code :

 {{{
 CREATE INDEX "name_gin_trgm_title_affaire" ON "affaires_affaire" USING gin
 ((LOWER("title"), name=gin_trgm_ops));''
 }}}
 Instead of (too many parenthesis) :

 {{{
 CREATE INDEX "name_gin_trgm_title_affaire" ON "affaires_affaire" USING gin
 (LOWER("title"),  name=gin_trgm_ops);''
 }}}

 There is a manual workaround, but its annoying.

 Thank you.

 Regards

--
Comment:

 Duplicate of #33021. `django.contrib.postgres` must be in `INSTALLED_APPS`
 when using `OpClass()`. See
 [https://docs.djangoproject.com/en/stable/ref/contrib/postgres/indexes
 /#opclass-expressions docs] and related ticket #32770.
-- 
Ticket URL: <https://code.djangoproject.com/ticket/35311#comment:2>
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/0107018e46cf943e-a298c6e4-2233-4eef-b3cd-90d1b5b23d58-000000%40eu-central-1.amazonses.com.

Reply via email to