diff options
| author | Mads Jensen <mje@inducks.org> | 2017-05-30 23:17:32 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2017-06-20 10:54:39 -0400 |
| commit | de42adf4ff6b80e25bbd9e70070146ef15076a83 (patch) | |
| tree | 2ea9366801b8e9c6bfdb62cad8460249a5fe48f3 /django | |
| parent | 2503ad51549ffa60468b80b9c99d3e54c744be4f (diff) | |
Fixed #27869 -- Added fastupdate and gin_pending_list_limit params to GinIndex.
Thanks Tim Graham and Markus Holtermann for review.
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/postgres/indexes.py | 22 | ||||
| -rw-r--r-- | django/db/backends/postgresql/features.py | 4 |
2 files changed, 26 insertions, 0 deletions
diff --git a/django/contrib/postgres/indexes.py b/django/contrib/postgres/indexes.py index 9ff66c2a00..7c687987db 100644 --- a/django/contrib/postgres/indexes.py +++ b/django/contrib/postgres/indexes.py @@ -33,5 +33,27 @@ class BrinIndex(Index): class GinIndex(Index): suffix = 'gin' + def __init__(self, fields=[], name=None, fastupdate=None, gin_pending_list_limit=None): + self.fastupdate = fastupdate + self.gin_pending_list_limit = gin_pending_list_limit + super().__init__(fields, name) + + def deconstruct(self): + path, args, kwargs = super().deconstruct() + kwargs['fastupdate'] = self.fastupdate + kwargs['gin_pending_list_limit'] = self.gin_pending_list_limit + return path, args, kwargs + + def get_sql_create_template_values(self, model, schema_editor, using): + parameters = super().get_sql_create_template_values(model, schema_editor, using=' USING gin') + with_params = [] + if self.gin_pending_list_limit is not None: + with_params.append('gin_pending_list_limit = %d' % self.gin_pending_list_limit) + if self.fastupdate is not None: + with_params.append('fastupdate = {}'.format('on' if self.fastupdate else 'off')) + if with_params: + parameters['extra'] = 'WITH ({}) {}'.format(', '.join(with_params), parameters['extra']) + return parameters + def create_sql(self, model, schema_editor): return super().create_sql(model, schema_editor, using=' USING gin') diff --git a/django/db/backends/postgresql/features.py b/django/db/backends/postgresql/features.py index 44c48eb946..3f6cc7894d 100644 --- a/django/db/backends/postgresql/features.py +++ b/django/db/backends/postgresql/features.py @@ -48,3 +48,7 @@ class DatabaseFeatures(BaseDatabaseFeatures): @cached_property def has_jsonb_agg(self): return self.connection.pg_version >= 90500 + + @cached_property + def has_gin_pending_list_limit(self): + return self.connection.pg_version >= 90500 |
