diff --git a/django/contrib/gis/db/backends/postgis/schema.py b/django/contrib/gis/db/backends/postgis/schema.py index c78484766f..da45d63af3 100644 --- a/django/contrib/gis/db/backends/postgis/schema.py +++ b/django/contrib/gis/db/backends/postgis/schema.py @@ -18,9 +18,9 @@ class PostGISSchemaEditor(DatabaseSchemaEditor): return True return super()._field_should_be_indexed(model, field) - def _create_index_sql(self, model, fields, **kwargs): - if len(fields) != 1 or not hasattr(fields[0], 'geodetic'): - return super()._create_index_sql(model, fields, **kwargs) + def _create_index_sql(self, model, *, fields=None, **kwargs): + if fields is None or len(fields) != 1 or not hasattr(fields[0], 'geodetic'): + return super()._create_index_sql(model, fields=fields, **kwargs) field = fields[0] field_column = self.quote_name(field.column) diff --git a/django/db/backends/base/schema.py b/django/db/backends/base/schema.py index 9e5ceb9ec2..2f05ae5d96 100644 --- a/django/db/backends/base/schema.py +++ b/django/db/backends/base/schema.py @@ -407,7 +407,7 @@ class BaseDatabaseSchemaEditor: # Created indexes for field_names in news.difference(olds): fields = [model._meta.get_field(field) for field in field_names] - self.execute(self._create_index_sql(model, fields, suffix="_idx")) + self.execute(self._create_index_sql(model, fields=fields, suffix='_idx')) def _delete_composed_index(self, model, fields, constraint_kwargs, sql): meta_constraint_names = {constraint.name for constraint in model._meta.constraints} @@ -778,7 +778,7 @@ class BaseDatabaseSchemaEditor: # False | True | True | False # True | True | True | False if (not old_field.db_index or old_field.unique) and new_field.db_index and not new_field.unique: - self.execute(self._create_index_sql(model, [new_field])) + self.execute(self._create_index_sql(model, fields=[new_field])) # Type alteration on primary key? Then we need to alter the column # referring to us. rels_to_update = [] @@ -990,7 +990,7 @@ class BaseDatabaseSchemaEditor: columns=Columns(model._meta.db_table, columns, self.quote_name), ) - def _create_index_sql(self, model, fields, *, name=None, suffix='', using='', + def _create_index_sql(self, model, *, fields=None, name=None, suffix='', using='', db_tablespace=None, col_suffixes=(), sql=None, opclasses=(), condition=None, include=None): """ @@ -1043,7 +1043,7 @@ class BaseDatabaseSchemaEditor: for field_names in model._meta.index_together: fields = [model._meta.get_field(field) for field in field_names] - output.append(self._create_index_sql(model, fields, suffix="_idx")) + output.append(self._create_index_sql(model, fields=fields, suffix='_idx')) for index in model._meta.indexes: output.append(index.create_sql(model, self)) @@ -1055,7 +1055,7 @@ class BaseDatabaseSchemaEditor: """ output = [] if self._field_should_be_indexed(model, field): - output.append(self._create_index_sql(model, [field])) + output.append(self._create_index_sql(model, fields=[field])) return output def _field_should_be_altered(self, old_field, new_field): diff --git a/django/db/backends/mysql/schema.py b/django/db/backends/mysql/schema.py index 728f2f6c64..b7268e2b23 100644 --- a/django/db/backends/mysql/schema.py +++ b/django/db/backends/mysql/schema.py @@ -126,7 +126,9 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor): if first_field.get_internal_type() == 'ForeignKey': constraint_names = self._constraint_names(model, [first_field.column], index=True) if not constraint_names: - self.execute(self._create_index_sql(model, [first_field], suffix="")) + self.execute( + self._create_index_sql(model, fields=[first_field], suffix='') + ) return super()._delete_composed_index(model, fields, *args) def _set_field_new_type_null_status(self, field, new_type): diff --git a/django/db/backends/postgresql/schema.py b/django/db/backends/postgresql/schema.py index b2442f80b7..13dd99adb0 100644 --- a/django/db/backends/postgresql/schema.py +++ b/django/db/backends/postgresql/schema.py @@ -83,9 +83,19 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor): if '[' in db_type: return None if db_type.startswith('varchar'): - return self._create_index_sql(model, [field], suffix='_like', opclasses=['varchar_pattern_ops']) + return self._create_index_sql( + model, + fields=[field], + suffix='_like', + opclasses=['varchar_pattern_ops'], + ) elif db_type.startswith('text'): - return self._create_index_sql(model, [field], suffix='_like', opclasses=['text_pattern_ops']) + return self._create_index_sql( + model, + fields=[field], + suffix='_like', + opclasses=['text_pattern_ops'], + ) return None def _alter_column_type_sql(self, model, old_field, new_field, new_type): @@ -215,13 +225,13 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor): return super()._delete_index_sql(model, name, sql) def _create_index_sql( - self, model, fields, *, name=None, suffix='', using='', + self, model, *, fields=None, name=None, suffix='', using='', db_tablespace=None, col_suffixes=(), sql=None, opclasses=(), condition=None, concurrently=False, include=None, ): sql = self.sql_create_index if not concurrently else self.sql_create_index_concurrently return super()._create_index_sql( - model, fields, name=name, suffix=suffix, using=using, db_tablespace=db_tablespace, - col_suffixes=col_suffixes, sql=sql, opclasses=opclasses, condition=condition, - include=include, + model, fields=fields, name=name, suffix=suffix, using=using, + db_tablespace=db_tablespace, col_suffixes=col_suffixes, sql=sql, + opclasses=opclasses, condition=condition, include=include, ) diff --git a/django/db/models/indexes.py b/django/db/models/indexes.py index f0f6cdab15..c5fb5789fe 100644 --- a/django/db/models/indexes.py +++ b/django/db/models/indexes.py @@ -66,9 +66,10 @@ class Index: col_suffixes = [order[1] for order in self.fields_orders] condition = self._get_condition_sql(model, schema_editor) return schema_editor._create_index_sql( - model, fields, name=self.name, using=using, db_tablespace=self.db_tablespace, - col_suffixes=col_suffixes, opclasses=self.opclasses, condition=condition, - include=include, **kwargs, + model, fields=fields, name=self.name, using=using, + db_tablespace=self.db_tablespace, col_suffixes=col_suffixes, + opclasses=self.opclasses, condition=condition, include=include, + **kwargs, ) def remove_sql(self, model, schema_editor, **kwargs):