Reviewers: ,
Please review this at http://codereview.tryton.org/26001/ Affected files: M trytond/backend/sqlite/table.py Index: trytond/backend/sqlite/table.py =================================================================== --- a/trytond/backend/sqlite/table.py +++ b/trytond/backend/sqlite/table.py @@ -91,9 +91,26 @@ def column_rename(self, old_name, new_name, exception=False): if self.column_exist(old_name) and \ not self.column_exist(new_name): - self.cursor.execute('ALTER TABLE "%s" ' \ - 'RENAME COLUMN "%s" TO "%s"' % - (self.table_name, old_name, new_name)) + temp_table = '_temp_%s' % self.table_name + TableHandler.table_rename(self.cursor, self.table_name, + temp_table) + new_table = TableHandler(self.cursor, self._model, + history=self.history) + for column, (notnull, hasdef, size, typname) \ + in self._columns.iteritems(): + if column == old_name: + column = new_name + new_table.add_raw_column(column, typname, False, + field_size=size) + new_columns = new_table._columns.keys() + old_columns = [x if x != old_name else new_name + for x in new_columns] + self.cursor.execute(('INSERT INTO "%s" (' + \ + ','.join('"%s"' % x for x in new_columns) + \ + ') SELECT ' + \ + ','.join('"%s"' % x for x in old_columns) + ' ' + \ + 'FROM "%s"') % (self.table_name, temp_table)) + self.cursor.execute('DROP TABLE "%s"' % temp_table) elif exception and self.column_exist(new_name): raise Exception('Unable to rename column %s.%s to %s.%s: ' \ '%s.%s already exist!' % \ -- [email protected] mailing list
