Django

Code

Changeset 6230

Show
Ignore:
Timestamp:
09/14/07 17:07:54 (10 months ago)
Author:
ikelly
Message:

Fixed an Oracle sqlflush / sequence reset column name bug exposed by the new test case in [6195].

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/db/backends/oracle/base.py

    r6218 r6230  
    355355                table_name = sequence_info['table'] 
    356356                seq_name = get_sequence_name(table_name) 
    357                 query = _get_sequence_reset_sql() % {'sequence': seq_name, 'table': self.quote_name(table_name)} 
     357                column_name = self.quote_name(sequence_info['column'] or 'id') 
     358                query = _get_sequence_reset_sql() % {'sequence': seq_name, 
     359                                                     'table': self.quote_name(table_name), 
     360                                                     'column': column_name} 
    358361                sql.append(query) 
    359362            return sql 
     
    369372                if isinstance(f, models.AutoField): 
    370373                    sequence_name = get_sequence_name(model._meta.db_table) 
    371                     output.append(query % {'sequence':sequence_name, 
    372                                            'table':model._meta.db_table}) 
     374                    column_name = self.quote_name(f.db_column or f.name) 
     375                    output.append(query % {'sequence': sequence_name, 
     376                                           'table': model._meta.db_table, 
     377                                           'column': column_name}) 
    373378                    break # Only one AutoField is allowed per model, so don't bother continuing. 
    374379            for f in model._meta.many_to_many: 
    375380                sequence_name = get_sequence_name(f.m2m_db_table()) 
    376                 output.append(query % {'sequence':sequence_name, 
    377                                        'table':f.m2m_db_table()}) 
     381                output.append(query % {'sequence': sequence_name, 
     382                                       'table': f.m2m_db_table(), 
     383                                       'column': self.quote_name('id')}) 
    378384        return output 
    379385 
     
    508514        BEGIN 
    509515            LOCK TABLE %(table)s IN SHARE MODE; 
    510             SELECT NVL(MAX(id), 0) INTO startvalue FROM %(table)s; 
     516            SELECT NVL(MAX(%(column)s), 0) INTO startvalue FROM %(table)s; 
    511517            SELECT %(sequence)s.nextval INTO cval FROM dual; 
    512518            cval := startvalue - cval;