mirror of
				https://github.com/django/django.git
				synced 2025-10-30 17:16:10 +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