]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
Check for rendered integer default is None on MySQL
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 27 Apr 2019 00:22:21 +0000 (20:22 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 28 Apr 2019 03:13:39 +0000 (23:13 -0400)
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
alembic/ddl/mysql.py
docs/build/unreleased/553.rst [new file with mode: 0644]
tests/test_mysql.py

index d20aec6845deb765c2f2a9e0d89d66e93d2e805a..f886f104c5dbec6181c09c85c957f354b102cab5 100644 (file)
@@ -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 (file)
index 0000000..8c072b9
--- /dev/null
@@ -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``.
index 754ee2befabed6b98ac2a555609c69feeb1f4f61..6e841e4bda01522c348076cfed3add48578f367f 100644 (file)
@@ -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")