summaryrefslogtreecommitdiff
path: root/migrate/changeset
diff options
context:
space:
mode:
authoremil.kroymann <unknown>2010-01-07 20:10:47 +0100
committeremil.kroymann <unknown>2010-01-07 20:10:47 +0100
commit7912af18ed473e296ccf40a52eabc81b978c8f1b (patch)
tree1c1c819e8af00f871afbc08b6cfa939366cd8564 /migrate/changeset
parentb7685663fc8cc7cf34dba975e141b64e4940a7d2 (diff)
downloadsqalchemy-migrate-7912af18ed473e296ccf40a52eabc81b978c8f1b.tar.gz
apply Emil Kroymann's patch for Issue 75
Diffstat (limited to 'migrate/changeset')
-rw-r--r--migrate/changeset/databases/mysql.py9
-rw-r--r--migrate/changeset/schema.py2
2 files changed, 10 insertions, 1 deletions
diff --git a/migrate/changeset/databases/mysql.py b/migrate/changeset/databases/mysql.py
index 6655a42..f32ea5f 100644
--- a/migrate/changeset/databases/mysql.py
+++ b/migrate/changeset/databases/mysql.py
@@ -4,6 +4,7 @@
from migrate.changeset import ansisql, exceptions, SQLA_06
from sqlalchemy.databases import mysql as sa_base
+from sqlalchemy import types as sqltypes
if not SQLA_06:
MySQLSchemaGenerator = sa_base.MySQLSchemaGenerator
@@ -23,6 +24,14 @@ class MySQLSchemaChanger(MySQLSchemaGenerator, ansisql.ANSISchemaChanger):
def visit_column(self, delta):
table = delta.table
colspec = self.get_column_specification(delta.result_column)
+ if delta.result_column.autoincrement:
+ first = [c for c in table.primary_key.columns
+ if (c.autoincrement and
+ isinstance(c.type, sqltypes.Integer) and
+ not c.foreign_keys)].pop(0)
+
+ if first.name == delta.current_name:
+ colspec += " AUTO_INCREMENT"
old_col_name = self.preparer.quote(delta.current_name, table.quote)
self.start_alter_table(table)
diff --git a/migrate/changeset/schema.py b/migrate/changeset/schema.py
index 9af0f7d..d182825 100644
--- a/migrate/changeset/schema.py
+++ b/migrate/changeset/schema.py
@@ -177,7 +177,7 @@ class ColumnDelta(DictMixin, sqlalchemy.schema.SchemaItem):
# Column attributes that can be altered
diff_keys = ('name', 'type', 'primary_key', 'nullable',
- 'server_onupdate', 'server_default')
+ 'server_onupdate', 'server_default', 'autoincrement')
diffs = dict()
__visit_name__ = 'column'