diff options
| author | Akshesh <aksheshdoshi@gmail.com> | 2016-08-08 17:20:25 +0530 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-08-12 18:37:03 -0400 |
| commit | 6e07ec3f655073bebdf1b1dfd2303e91202e14e1 (patch) | |
| tree | d62f91ee2af2a9ae218087037f76d48767ebac35 /django | |
| parent | 236baa0f0ec31422bc8c36b24e41112f7a564532 (diff) | |
Fixed #27030 -- Added contrib.postgres.indexes.GinIndex.
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/postgres/indexes.py | 12 | ||||
| -rw-r--r-- | django/db/backends/base/schema.py | 1 | ||||
| -rw-r--r-- | django/db/backends/postgresql/schema.py | 1 | ||||
| -rw-r--r-- | django/db/models/indexes.py | 3 |
4 files changed, 16 insertions, 1 deletions
diff --git a/django/contrib/postgres/indexes.py b/django/contrib/postgres/indexes.py new file mode 100644 index 0000000000..5382c15e1a --- /dev/null +++ b/django/contrib/postgres/indexes.py @@ -0,0 +1,12 @@ +from __future__ import unicode_literals + +from django.db.models import Index + +__all__ = ['GinIndex'] + + +class GinIndex(Index): + suffix = 'gin' + + def create_sql(self, model, schema_editor): + return super(GinIndex, self).create_sql(model, schema_editor, using=' USING gin') diff --git a/django/db/backends/base/schema.py b/django/db/backends/base/schema.py index 67960a02ac..aae64e3be7 100644 --- a/django/db/backends/base/schema.py +++ b/django/db/backends/base/schema.py @@ -880,6 +880,7 @@ class BaseDatabaseSchemaEditor(object): return sql_create_index % { "table": self.quote_name(model._meta.db_table), "name": self.quote_name(self._create_index_name(model, columns, suffix=suffix)), + "using": "", "columns": ", ".join(self.quote_name(column) for column in columns), "extra": tablespace_sql, } diff --git a/django/db/backends/postgresql/schema.py b/django/db/backends/postgresql/schema.py index 16f2003196..1afb85d468 100644 --- a/django/db/backends/postgresql/schema.py +++ b/django/db/backends/postgresql/schema.py @@ -11,6 +11,7 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor): sql_delete_sequence = "DROP SEQUENCE IF EXISTS %(sequence)s CASCADE" sql_set_sequence_max = "SELECT setval('%(sequence)s', MAX(%(column)s)) FROM %(table)s" + sql_create_index = "CREATE INDEX %(name)s ON %(table)s%(using)s (%(columns)s)%(extra)s" sql_create_varchar_index = "CREATE INDEX %(name)s ON %(table)s (%(columns)s varchar_pattern_ops)%(extra)s" sql_create_text_index = "CREATE INDEX %(name)s ON %(table)s (%(columns)s text_pattern_ops)%(extra)s" diff --git a/django/db/models/indexes.py b/django/db/models/indexes.py index bb33f8a758..f70c2e5625 100644 --- a/django/db/models/indexes.py +++ b/django/db/models/indexes.py @@ -42,7 +42,7 @@ class Index(object): self.name = 'D%s' % self.name[1:] return errors - def create_sql(self, model, schema_editor): + def create_sql(self, model, schema_editor, using=''): fields = [model._meta.get_field(field_name) for field_name, order in self.fields_orders] tablespace_sql = schema_editor._get_index_tablespace_sql(model, fields) quote_name = schema_editor.quote_name @@ -54,6 +54,7 @@ class Index(object): 'table': quote_name(model._meta.db_table), 'name': quote_name(self.name), 'columns': ', '.join(columns), + 'using': using, 'extra': tablespace_sql, } |
