Skip to content

Commit

Permalink
Refactored get_max_name_length() to DatabaseOperations.max_name_lengt…
Browse files Browse the repository at this point in the history
…h(). Refs #5106

git-svn-id: http://code.djangoproject.com/svn/django/trunk@5960 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
adrianholovaty committed Aug 19, 2007
1 parent d3e69c3 commit e4b7e36
Show file tree
Hide file tree
Showing 11 changed files with 18 additions and 31 deletions.
4 changes: 2 additions & 2 deletions django/core/management/sql.py
Expand Up @@ -148,7 +148,7 @@ def sql_delete(app, style):
(style.SQL_KEYWORD('ALTER TABLE'), (style.SQL_KEYWORD('ALTER TABLE'),
style.SQL_TABLE(backend.quote_name(table)), style.SQL_TABLE(backend.quote_name(table)),
style.SQL_KEYWORD(connection.ops.drop_foreignkey_sql()), style.SQL_KEYWORD(connection.ops.drop_foreignkey_sql()),
style.SQL_FIELD(truncate_name(r_name, backend.get_max_name_length())))) style.SQL_FIELD(truncate_name(r_name, connection.ops.max_name_length()))))
del references_to_delete[model] del references_to_delete[model]
if model._meta.has_auto_field and hasattr(backend, 'get_drop_sequence'): if model._meta.has_auto_field and hasattr(backend, 'get_drop_sequence'):
output.append(backend.get_drop_sequence(model._meta.db_table)) output.append(backend.get_drop_sequence(model._meta.db_table))
Expand Down Expand Up @@ -297,7 +297,7 @@ def sql_for_pending_references(model, style, pending_references):
# So we are careful with character usage here. # So we are careful with character usage here.
r_name = '%s_refs_%s_%x' % (r_col, col, abs(hash((r_table, table)))) r_name = '%s_refs_%s_%x' % (r_col, col, abs(hash((r_table, table))))
final_output.append(style.SQL_KEYWORD('ALTER TABLE') + ' %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s)%s;' % \ final_output.append(style.SQL_KEYWORD('ALTER TABLE') + ' %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s)%s;' % \
(backend.quote_name(r_table), truncate_name(r_name, backend.get_max_name_length()), (backend.quote_name(r_table), truncate_name(r_name, connection.ops.max_name_length()),
backend.quote_name(r_col), backend.quote_name(table), backend.quote_name(col), backend.quote_name(r_col), backend.quote_name(table), backend.quote_name(col),
connection.ops.deferrable_sql())) connection.ops.deferrable_sql()))
del pending_references[model] del pending_references[model]
Expand Down
7 changes: 7 additions & 0 deletions django/db/backends/__init__.py
Expand Up @@ -119,3 +119,10 @@ def limit_offset_sql(self, limit, offset=None):
if offset and offset != 0: if offset and offset != 0:
sql += " OFFSET %s" % offset sql += " OFFSET %s" % offset
return sql return sql

def max_name_length(self):
"""
Returns the maximum length of table and column names, or None if there
is no limit.
"""
return None
3 changes: 0 additions & 3 deletions django/db/backends/ado_mssql/base.py
Expand Up @@ -106,9 +106,6 @@ def get_random_function_sql():
def get_pk_default_value(): def get_pk_default_value():
return "DEFAULT" return "DEFAULT"


def get_max_name_length():
return None

def get_start_transaction_sql(): def get_start_transaction_sql():
return "BEGIN;" return "BEGIN;"


Expand Down
1 change: 0 additions & 1 deletion django/db/backends/dummy/base.py
Expand Up @@ -45,7 +45,6 @@ def close(self):
dictfetchall = complain dictfetchall = complain
get_random_function_sql = complain get_random_function_sql = complain
get_pk_default_value = complain get_pk_default_value = complain
get_max_name_length = ignore
get_start_transaction_sql = complain get_start_transaction_sql = complain
get_sql_flush = complain get_sql_flush = complain
get_sql_sequence_reset = complain get_sql_sequence_reset = complain
Expand Down
3 changes: 0 additions & 3 deletions django/db/backends/mysql/base.py
Expand Up @@ -168,9 +168,6 @@ def get_random_function_sql():
def get_pk_default_value(): def get_pk_default_value():
return "DEFAULT" return "DEFAULT"


def get_max_name_length():
return None;

def get_start_transaction_sql(): def get_start_transaction_sql():
return "BEGIN;" return "BEGIN;"


Expand Down
3 changes: 0 additions & 3 deletions django/db/backends/mysql_old/base.py
Expand Up @@ -187,9 +187,6 @@ def get_random_function_sql():
def get_pk_default_value(): def get_pk_default_value():
return "DEFAULT" return "DEFAULT"


def get_max_name_length():
return None;

def get_start_transaction_sql(): def get_start_transaction_sql():
return "BEGIN;" return "BEGIN;"


Expand Down
14 changes: 7 additions & 7 deletions django/db/backends/oracle/base.py
Expand Up @@ -58,7 +58,7 @@ def deferrable_sql(self):
return " DEFERRABLE INITIALLY DEFERRED" return " DEFERRABLE INITIALLY DEFERRED"


def last_insert_id(self, cursor, table_name, pk_name): def last_insert_id(self, cursor, table_name, pk_name):
sq_name = util.truncate_name(table_name, get_max_name_length()-3) sq_name = util.truncate_name(table_name, self.max_name_length() - 3)
cursor.execute('SELECT %s_sq.currval FROM dual' % sq_name) cursor.execute('SELECT %s_sq.currval FROM dual' % sq_name)
return cursor.fetchone()[0] return cursor.fetchone()[0]


Expand All @@ -67,6 +67,9 @@ def limit_offset_sql(self, limit, offset=None):
# Instead, they are handled in django/db/backends/oracle/query.py. # Instead, they are handled in django/db/backends/oracle/query.py.
return "" return ""


def max_name_length(self):
return 30

class DatabaseWrapper(BaseDatabaseWrapper): class DatabaseWrapper(BaseDatabaseWrapper):
ops = DatabaseOperations() ops = DatabaseOperations()


Expand Down Expand Up @@ -170,7 +173,7 @@ def quote_name(name):
# always defaults to uppercase. # always defaults to uppercase.
# We simplify things by making Oracle identifiers always uppercase. # We simplify things by making Oracle identifiers always uppercase.
if not name.startswith('"') and not name.endswith('"'): if not name.startswith('"') and not name.endswith('"'):
name = '"%s"' % util.truncate_name(name.upper(), get_max_name_length()) name = '"%s"' % util.truncate_name(name.upper(), DatabaseOperations().max_name_length())
return name.upper() return name.upper()


dictfetchone = util.dictfetchone dictfetchone = util.dictfetchone
Expand All @@ -189,9 +192,6 @@ def get_random_function_sql():
def get_pk_default_value(): def get_pk_default_value():
return "DEFAULT" return "DEFAULT"


def get_max_name_length():
return 30

def get_start_transaction_sql(): def get_start_transaction_sql():
return None return None


Expand Down Expand Up @@ -249,7 +249,7 @@ def get_sql_flush(style, tables, sequences):
return [] return []


def get_sequence_name(table): def get_sequence_name(table):
name_length = get_max_name_length() - 3 name_length = DatabaseOperations().max_name_length() - 3
return '%s_SQ' % util.truncate_name(table, name_length).upper() return '%s_SQ' % util.truncate_name(table, name_length).upper()


def get_sql_sequence_reset(style, model_list): def get_sql_sequence_reset(style, model_list):
Expand All @@ -271,7 +271,7 @@ def get_sql_sequence_reset(style, model_list):
return output return output


def get_trigger_name(table): def get_trigger_name(table):
name_length = get_max_name_length() - 3 name_length = DatabaseOperations().max_name_length() - 3
return '%s_TR' % util.truncate_name(table, name_length).upper() return '%s_TR' % util.truncate_name(table, name_length).upper()


def get_query_set_class(DefaultQuerySet): def get_query_set_class(DefaultQuerySet):
Expand Down
3 changes: 0 additions & 3 deletions django/db/backends/postgresql/base.py
Expand Up @@ -137,9 +137,6 @@ def get_random_function_sql():
def get_pk_default_value(): def get_pk_default_value():
return "DEFAULT" return "DEFAULT"


def get_max_name_length():
return None

def get_start_transaction_sql(): def get_start_transaction_sql():
return "BEGIN;" return "BEGIN;"


Expand Down
3 changes: 0 additions & 3 deletions django/db/backends/postgresql_psycopg2/base.py
Expand Up @@ -91,9 +91,6 @@ def get_random_function_sql():
def get_pk_default_value(): def get_pk_default_value():
return "DEFAULT" return "DEFAULT"


def get_max_name_length():
return None

def get_start_transaction_sql(): def get_start_transaction_sql():
return "BEGIN;" return "BEGIN;"


Expand Down
3 changes: 0 additions & 3 deletions django/db/backends/sqlite3/base.py
Expand Up @@ -121,9 +121,6 @@ def get_random_function_sql():
def get_pk_default_value(): def get_pk_default_value():
return "NULL" return "NULL"


def get_max_name_length():
return None

def get_start_transaction_sql(): def get_start_transaction_sql():
return "BEGIN;" return "BEGIN;"


Expand Down
5 changes: 2 additions & 3 deletions django/db/models/options.py
Expand Up @@ -63,7 +63,7 @@ def contribute_to_class(self, cls, name):
del self.meta del self.meta


def _prepare(self, model): def _prepare(self, model):
from django.db import backend from django.db import connection
from django.db.backends.util import truncate_name from django.db.backends.util import truncate_name
if self.order_with_respect_to: if self.order_with_respect_to:
self.order_with_respect_to = self.get_field(self.order_with_respect_to) self.order_with_respect_to = self.get_field(self.order_with_respect_to)
Expand All @@ -79,8 +79,7 @@ def _prepare(self, model):
# If the db_table wasn't provided, use the app_label + module_name. # If the db_table wasn't provided, use the app_label + module_name.
if not self.db_table: if not self.db_table:
self.db_table = "%s_%s" % (self.app_label, self.module_name) self.db_table = "%s_%s" % (self.app_label, self.module_name)
self.db_table = truncate_name(self.db_table, self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
backend.get_max_name_length())


def add_field(self, field): def add_field(self, field):
# Insert the given field in the order in which it was created, using # Insert the given field in the order in which it was created, using
Expand Down

0 comments on commit e4b7e36

Please sign in to comment.