Merged in moriyoshi/alembic/bugfix/autoincrement_for_mysql_alter_column (pull request #21)
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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_:
|
||||
|
||||
Reference in New Issue
Block a user