mirror of
https://github.com/django/django.git
synced 2025-10-28 16:16:12 +00:00
boulder-oracle-sprint: Fixed "Identifier too long" errors and problems with sequence and trigger naming.
git-svn-id: http://code.djangoproject.com/svn/django/branches/boulder-oracle-sprint@4080 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -199,11 +199,12 @@ def _get_sql_model_create(model, known_models=set()):
|
|||||||
|
|
||||||
# To simulate auto-incrementing primary keys in Oracle -- creating primary tables
|
# To simulate auto-incrementing primary keys in Oracle -- creating primary tables
|
||||||
if settings.DATABASE_ENGINE == 'oracle' and opts.has_auto_field:
|
if settings.DATABASE_ENGINE == 'oracle' and opts.has_auto_field:
|
||||||
sequence_name = truncate_name('%s_sq' % opts.db_table, backend.get_max_name_length())
|
name_length = backend.get_max_name_length() - 3
|
||||||
|
sequence_name = '%s_sq' % truncate_name(opts.db_table, name_length)
|
||||||
sequence_statement = 'CREATE SEQUENCE %s;' % sequence_name
|
sequence_statement = 'CREATE SEQUENCE %s;' % sequence_name
|
||||||
final_output.append(sequence_statement)
|
final_output.append(sequence_statement)
|
||||||
trigger_statement = '' + \
|
trigger_statement = '' + \
|
||||||
'CREATE OR REPLACE TRIGGER %s\n' % truncate_name('%s_tr' % opts.db_table, backend.get_max_name_length()) + \
|
'CREATE OR REPLACE TRIGGER %s\n' % ('%s_tr' % truncate_name(opts.db_table, name_length)) + \
|
||||||
' BEFORE INSERT ON %s\n' % backend.quote_name(opts.db_table) + \
|
' BEFORE INSERT ON %s\n' % backend.quote_name(opts.db_table) + \
|
||||||
' FOR EACH ROW\n' + \
|
' FOR EACH ROW\n' + \
|
||||||
' WHEN (new.id IS NULL)\n' + \
|
' WHEN (new.id IS NULL)\n' + \
|
||||||
@@ -277,12 +278,13 @@ def _get_many_to_many_sql_for_model(model):
|
|||||||
|
|
||||||
# To simulate auto-incrementing primary keys in Oracle -- creating m2m tables
|
# To simulate auto-incrementing primary keys in Oracle -- creating m2m tables
|
||||||
if settings.DATABASE_ENGINE == 'oracle':
|
if settings.DATABASE_ENGINE == 'oracle':
|
||||||
|
name_length = backend.get_max_name_length() - 3
|
||||||
m_table = f.m2m_db_table()
|
m_table = f.m2m_db_table()
|
||||||
sequence_name = truncate_name('%s_sq' % m_table, backend.get_max_name_length())
|
sequence_name = '%s_sq' % truncate_name(m_table, name_length)
|
||||||
sequence_statement = 'CREATE SEQUENCE %s;' % sequence_name
|
sequence_statement = 'CREATE SEQUENCE %s;' % sequence_name
|
||||||
final_output.append(sequence_statement)
|
final_output.append(sequence_statement)
|
||||||
trigger_statement = '' + \
|
trigger_statement = '' + \
|
||||||
'CREATE OR REPLACE TRIGGER %s\n' % truncate_name('%s_tr' % m_table, backend.get_max_name_length()) + \
|
'CREATE OR REPLACE TRIGGER %s\n' % ('%s_tr' % truncate_name(m_table, name_length)) + \
|
||||||
' BEFORE INSERT ON %s\n' % backend.quote_name(m_table) + \
|
' BEFORE INSERT ON %s\n' % backend.quote_name(m_table) + \
|
||||||
' FOR EACH ROW\n' + \
|
' FOR EACH ROW\n' + \
|
||||||
' WHEN (new.id IS NULL)\n' + \
|
' WHEN (new.id IS NULL)\n' + \
|
||||||
|
|||||||
@@ -99,7 +99,8 @@ dictfetchmany = util.dictfetchmany
|
|||||||
dictfetchall = util.dictfetchall
|
dictfetchall = util.dictfetchall
|
||||||
|
|
||||||
def get_last_insert_id(cursor, table_name, pk_name):
|
def get_last_insert_id(cursor, table_name, pk_name):
|
||||||
cursor.execute('SELECT %s_sq.currval FROM dual' % table_name)
|
sq_name = util.truncate_name(table_name, get_max_name_length()-3)
|
||||||
|
cursor.execute('SELECT %s_sq.currval FROM dual' % sq_name)
|
||||||
return cursor.fetchone()[0]
|
return cursor.fetchone()[0]
|
||||||
|
|
||||||
def get_date_extract_sql(lookup_type, table_name):
|
def get_date_extract_sql(lookup_type, table_name):
|
||||||
|
|||||||
Reference in New Issue
Block a user