summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorMads Jensen <mje@inducks.org>2017-05-30 23:17:32 +0200
committerTim Graham <timograham@gmail.com>2017-06-20 10:54:39 -0400
commitde42adf4ff6b80e25bbd9e70070146ef15076a83 (patch)
tree2ea9366801b8e9c6bfdb62cad8460249a5fe48f3 /django
parent2503ad51549ffa60468b80b9c99d3e54c744be4f (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.py22
-rw-r--r--django/db/backends/postgresql/features.py4
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