#28888: Index added to _meta.indexes with Meta.indexes=[] yields two equal
addIndex() operations.
--------------------------------------------------+------------------------
Reporter: Jan Pieter Waagmeester | Owner: nobody
Type: Uncategorized | Status: new
Component: Migrations | Version: 1.11
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
--------------------------------------------------+------------------------
I use a custom field derived from
`django.contrib.postgres.fields.JSONField`, which adds an `GinIndex` to
`model._meta.indexes`:
{{{
from django.contrib.postgres.fields import JSONField
from django.contrib.postgres.indexes import GinIndex
class CustomJSONField(JSONField):
def contribute_to_class(self, cls, name):
super(CustomJSONField, self).contribute_to_class(cls, name)
index = GinIndex(fields=[name])
index.set_name_with_model(cls)
cls._meta.indexes.append(index)
}}}
When used in a model like this,
{{{
class Blog(models.Model):
title = models.CharField(max_length=100)
json = CustomJSONField()
}}}
Migrations for model and index are created as expected:
{{{
./manage.py --version
1.11.8
./manage.py makemigrations app
Migrations for 'app':
app/migrations/0001_initial.py
- Create model Blog
- Create index app_blog_json_2cf556_gin on field(s) json of model blog
}}}
But when I add an empty list of indexes like this:
{{{
class Blog(models.Model):
title = models.CharField(max_length=100)
json = CustomJSONField()
class Meta:
indexes = []
}}}
two indexes are created:
{{{
rm -rf app/migrations
./manage.py --version
1.11.8
./manage.py makemigrations app
Migrations for 'app':
app/migrations/0001_initial.py
- Create model Blog
- Create index app_blog_json_2cf556_gin on field(s) json of model blog
- Create index app_blog_json_2cf556_gin on field(s) json of model blog
}}}
Which of course results in `django.db.utils.ProgrammingError: relation
"app_blog_json_2cf556_gin" already exists`.
--
Ticket URL: <https://code.djangoproject.com/ticket/28888>
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 post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/049.87973ef6a467674c978e56432b43dfa7%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.