summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2014-06-20 14:32:11 +0200
committerClaude Paroz <claude@2xlibre.net>2014-12-18 21:14:29 +0100
commitf46a16614d0a8339362ed7a48eef8f1914f96c85 (patch)
treefb6265d9b9b94de0254cd679d5de41ce82c7eb24 /django
parent2f13a48f333ff6f4bf1fd6c22c082cd0e9120ed8 (diff)
[1.7.x] Fixed #24015 -- Factorized create_index_sql expression
Backport of 6072f17d0 from master, with one test reinforced. Thanks Tim Graham for the review.
Diffstat (limited to 'django')
-rw-r--r--django/db/backends/schema.py33
1 files changed, 8 insertions, 25 deletions
diff --git a/django/db/backends/schema.py b/django/db/backends/schema.py
index fff1489d82..586ce369d5 100644
--- a/django/db/backends/schema.py
+++ b/django/db/backends/schema.py
@@ -322,14 +322,9 @@ class BaseDatabaseSchemaEditor(object):
))
self.execute(self._delete_constraint_sql(self.sql_delete_index, model, constraint_names[0]))
# Created indexes
- for fields in news.difference(olds):
- columns = [model._meta.get_field_by_name(field)[0].column for field in fields]
- self.execute(self.sql_create_index % {
- "table": self.quote_name(model._meta.db_table),
- "name": self._create_index_name(model, columns, suffix="_idx"),
- "columns": ", ".join(self.quote_name(column) for column in columns),
- "extra": "",
- })
+ for field_names in news.difference(olds):
+ fields = [model._meta.get_field_by_name(field)[0] for field in field_names]
+ self.execute(self._create_index_sql(model, fields, suffix="_idx"))
def alter_db_table(self, model, old_db_table, new_db_table):
"""
@@ -389,14 +384,7 @@ class BaseDatabaseSchemaEditor(object):
self.execute(sql)
# Add an index, if required
if field.db_index and not field.unique:
- self.deferred_sql.append(
- self.sql_create_index % {
- "name": self._create_index_name(model, [field.column], suffix=""),
- "table": self.quote_name(model._meta.db_table),
- "columns": self.quote_name(field.column),
- "extra": "",
- }
- )
+ self.deferred_sql.append(self._create_index_sql(model, [field]))
# Add any FK constraints later
if field.rel and self.connection.features.supports_foreign_keys and field.db_constraint:
self.deferred_sql.append(self._create_fk_sql(model, field, "_fk_%(to_table)s_%(to_column)s"))
@@ -637,15 +625,10 @@ class BaseDatabaseSchemaEditor(object):
if not old_field.unique and new_field.unique:
self.execute(self._create_unique_sql(model, [new_field.column]))
# Added an index?
- if not old_field.db_index and new_field.db_index and not new_field.unique and not (not old_field.unique and new_field.unique):
- self.execute(
- self.sql_create_index % {
- "table": self.quote_name(model._meta.db_table),
- "name": self._create_index_name(model, [new_field.column], suffix="_uniq"),
- "columns": self.quote_name(new_field.column),
- "extra": "",
- }
- )
+ if (not old_field.db_index and new_field.db_index and
+ not new_field.unique and not
+ (not old_field.unique and new_field.unique)):
+ self.execute(self._create_index_sql(model, [new_field], suffix="_uniq"))
# Type alteration on primary key? Then we need to alter the column
# referring to us.
rels_to_update = []