From: Mike Bayer Date: Sat, 27 Apr 2019 00:22:21 +0000 (-0400) Subject: Check for rendered integer default is None on MySQL X-Git-Tag: rel_1_0_10~2^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7a53fc01af539a5b2bc985bc55694466a375ea14;p=thirdparty%2Fsqlalchemy%2Falembic.git Check for rendered integer default is None on MySQL Fixed bug when using the :paramref:`.EnvironmentContext.configure.compare_server_default` flag set to ``True``where a server default that is introduced in the table metadata on an ``Integer`` column, where there is no existing server default in the database, would raise a ``TypeError``. Change-Id: Ia2954cc113b47687d1cbf8244c77742326a50c86 Fixes: #553 --- diff --git a/alembic/ddl/mysql.py b/alembic/ddl/mysql.py index d20aec68..f886f104 100644 --- a/alembic/ddl/mysql.py +++ b/alembic/ddl/mysql.py @@ -128,7 +128,7 @@ class MySQLImpl(DefaultImpl): elif inspector_column.type._type_affinity is sqltypes.Integer: rendered_inspector_default = re.sub( r"^'|'$", "", rendered_inspector_default - ) + ) if rendered_inspector_default is not None else None return rendered_inspector_default != rendered_metadata_default elif rendered_inspector_default and rendered_metadata_default: # adjust for "function()" vs. "FUNCTION" diff --git a/docs/build/unreleased/553.rst b/docs/build/unreleased/553.rst new file mode 100644 index 00000000..8c072b9d --- /dev/null +++ b/docs/build/unreleased/553.rst @@ -0,0 +1,9 @@ +.. change:: + :tags: bug, autogenerate, mysql + :tickets: 553 + + Fixed bug when using the + :paramref:`.EnvironmentContext.configure.compare_server_default` flag set + to ``True``where a server default that is introduced in the table metadata + on an ``Integer`` column, where there is no existing server default in the + database, would raise a ``TypeError``. diff --git a/tests/test_mysql.py b/tests/test_mysql.py index 754ee2be..6e841e4b 100644 --- a/tests/test_mysql.py +++ b/tests/test_mysql.py @@ -453,6 +453,9 @@ class MySQLDefaultCompareTest(TestBase): def test_compare_timestamp_current_timestamp_diff(self): self._compare_default_roundtrip(TIMESTAMP(), None, "CURRENT_TIMESTAMP") + def test_compare_integer_from_none(self): + self._compare_default_roundtrip(Integer(), None, "0") + def test_compare_integer_same(self): self._compare_default_roundtrip(Integer(), "5")