]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
- Fixed bug where the ``server_default`` parameter of ``alter_column()``
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 22 Nov 2015 20:25:00 +0000 (15:25 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 22 Nov 2015 20:25:00 +0000 (15:25 -0500)
would not function correctly in batch mode.
fixes #338

alembic/operations/batch.py
docs/build/changelog.rst
tests/test_batch.py

index 769cd92e9c0fdbc5ddf152316db830a11f0d2ce3..369d08dd0f9bca967d213b772c2e5446e34f365f 100644 (file)
@@ -265,7 +265,7 @@ class ApplyBatchImpl(object):
         if nullable is not None:
             existing.nullable = nullable
         if server_default is not False:
-            existing.server_default = server_default
+            sql_schema.DefaultClause(server_default)._set_parent(existing)
         if autoincrement is not None:
             existing.autoincrement = bool(autoincrement)
 
index 187e7246ffb9852f9ec6059ee77efc4354fb14fe..15c5f0cc6d12bc88851ba7956b44c29c6fdd1713 100644 (file)
@@ -6,6 +6,13 @@ Changelog
 .. changelog::
     :version: 0.8.4
 
+    .. change::
+      :tags: bug, batch
+      :tickets: 338
+
+      Fixed bug where the ``server_default`` parameter of ``alter_column()``
+      would not function correctly in batch mode.
+
     .. change::
       :tags: bug, autogenerate
       :tickets: 337
index 813b15da78bc1b6e2352159ab15f14494b1db371..6842216cbc74b1b23a34dab8a65d6173daa2a57d 100644 (file)
@@ -339,6 +339,15 @@ class BatchApplyTest(TestBase):
         new_table = self._assert_impl(impl, colnames=['id', 'x', 'y', 'g'])
         eq_(new_table.c.g.name, 'g')
 
+    def test_add_server_default(self):
+        impl = self._simple_fixture()
+        impl.alter_column('tname', 'y', server_default="10")
+        new_table = self._assert_impl(
+            impl, ddl_contains="DEFAULT '10'")
+        eq_(
+            new_table.c.y.server_default.arg, "10"
+        )
+
     def test_rename_col_pk(self):
         impl = self._simple_fixture()
         impl.alter_column('tname', 'id', name='foobar')