Merged in moriyoshi/alembic/bugfix/autoincrement_for_mysql_alter_column (pull request #21)

This commit is contained in:
Mike Bayer
2012-08-22 21:14:46 -04:00
4 changed files with 28 additions and 8 deletions

View File

@@ -83,11 +83,14 @@ class DefaultImpl(object):
name=None,
type_=None,
schema=None,
autoincrement=None,
existing_type=None,
existing_server_default=None,
existing_nullable=None
existing_nullable=None,
existing_autoincrement=None
):
if autoincrement is not None or existing_autoincrement is not None:
util.warn("nautoincrement and existing_autoincrement only make sense for MySQL")
if nullable is not None:
self._exec(base.ColumnNullable(table_name, column_name,
nullable, schema=schema,

View File

@@ -30,9 +30,11 @@ class MSSQLImpl(DefaultImpl):
name=None,
type_=None,
schema=None,
autoincrement=None,
existing_type=None,
existing_server_default=None,
existing_nullable=None
existing_nullable=None,
existing_autoincrement=None
):
if nullable is not None and existing_type is None:
@@ -52,8 +54,10 @@ class MSSQLImpl(DefaultImpl):
nullable=nullable,
type_=type_,
schema=schema,
autoincrement=autoincrement,
existing_type=existing_type,
existing_nullable=existing_nullable
existing_nullable=existing_nullable,
existing_autoincrement=existing_autoincrement
)
if server_default is not False:

View File

@@ -15,9 +15,11 @@ class MySQLImpl(DefaultImpl):
name=None,
type_=None,
schema=None,
autoincrement=None,
existing_type=None,
existing_server_default=None,
existing_nullable=None
existing_nullable=None,
existing_autoincrement=None
):
self._exec(
MySQLAlterColumn(
@@ -29,6 +31,7 @@ class MySQLImpl(DefaultImpl):
else True,
type_=type_ if type_ is not None else existing_type,
default=server_default if server_default is not False else existing_server_default,
autoincrement=autoincrement if autoincrement is not None else existing_autoincrement
)
)
@@ -37,12 +40,14 @@ class MySQLAlterColumn(AlterColumn):
newname=None,
type_=None,
nullable=None,
default=False):
default=False,
autoincrement=None):
super(AlterColumn, self).__init__(name, schema=schema)
self.column_name = column_name
self.nullable = nullable
self.newname = newname
self.default = default
self.autoincrement = autoincrement
if type_ is None:
raise util.CommandError(
"All MySQL ALTER COLUMN operations "
@@ -71,7 +76,8 @@ def _mysql_alter_column(element, compiler, **kw):
name=element.newname,
nullable=element.nullable,
server_default=element.default,
type_=element.type_
type_=element.type_,
autoincrement=element.autoincrement
),
)
@@ -81,12 +87,14 @@ def render_value(compiler, expr):
else:
return compiler.sql_compiler.process(expr)
def _mysql_colspec(compiler, name, nullable, server_default, type_):
def _mysql_colspec(compiler, name, nullable, server_default, type_, autoincrement):
spec = "%s %s %s" % (
name,
compiler.dialect.type_compiler.process(type_),
"NULL" if nullable else "NOT NULL"
)
if autoincrement is not None:
spec += " AUTO_INCREMENT"
if server_default != False:
spec += " DEFAULT %s" % render_value(compiler, server_default)

View File

@@ -156,9 +156,11 @@ class Operations(object):
server_default=False,
name=None,
type_=None,
autoincrement=None,
existing_type=None,
existing_server_default=False,
existing_nullable=None,
existing_autoincrement=None
):
"""Issue an "alter column" instruction using the
current migration context.
@@ -223,6 +225,7 @@ class Operations(object):
:param existing_nullable: Optional; the existing nullability
of the column. Required on MySQL if the existing nullability
is not being changed; else MySQL sets this to NULL.
:param existing_autoincrement: Optional; the
"""
compiler = self.impl.dialect.statement_compiler(
@@ -247,9 +250,11 @@ class Operations(object):
server_default=server_default,
name=name,
type_=type_,
autoincrement=autoincrement,
existing_type=existing_type,
existing_server_default=existing_server_default,
existing_nullable=existing_nullable,
existing_autoincrement=existing_autoincrement
)
if type_: