]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
Fixed missing prefix on FetchedValue
authordavid-fed <47917339+david-fed@users.noreply.github.com>
Mon, 7 Jul 2025 20:44:15 +0000 (16:44 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 8 Jul 2025 14:47:44 +0000 (10:47 -0400)
Fixed the rendering of ``server_default=FetchedValue()`` to ensure it is
preceded by the ``sa.`` prefix in the migration script. Pull request
courtesy david-fed.

Fixes: #1633
Closes: #1691
Pull-request: https://github.com/sqlalchemy/alembic/pull/1691
Pull-request-sha: 468ad598c7975d240c3b9911585b3367f32900af
Change-Id: I828655e26c5e6d2a39d5407dbcc20bda19d11a7a

alembic/autogenerate/render.py
docs/build/unreleased/1633.rst [new file with mode: 0644]
tests/test_autogen_render.py

index bd20ced8da6c10293ab72d6e69b0da31333f5597..64fe72b120ffd43e1e492d91eef519dbaa01295f 100644 (file)
@@ -813,6 +813,8 @@ def _render_server_default(
             return _render_potential_expr(
                 default.arg, autogen_context, is_server_default=True
             )
+    elif isinstance(default, sa_schema.FetchedValue):
+        return _render_fetched_value(autogen_context)
 
     if isinstance(default, str) and repr_:
         default = repr(re.sub(r"^'|'$", "", default))
@@ -850,6 +852,12 @@ def _render_identity(
     }
 
 
+def _render_fetched_value(autogen_context: AutogenContext) -> str:
+    return "%(prefix)sFetchedValue()" % {
+        "prefix": _sqlalchemy_autogenerate_prefix(autogen_context),
+    }
+
+
 def _repr_type(
     type_: TypeEngine,
     autogen_context: AutogenContext,
diff --git a/docs/build/unreleased/1633.rst b/docs/build/unreleased/1633.rst
new file mode 100644 (file)
index 0000000..3d38f5e
--- /dev/null
@@ -0,0 +1,7 @@
+.. change::
+    :tags: bug, autogenerate
+    :tickets: 1633
+
+    Fixed the rendering of ``server_default=FetchedValue()`` to ensure it is
+    preceded by the ``sa.`` prefix in the migration script. Pull request
+    courtesy david-fed.
index c098aca4e561cdf0bde9119834396cd46d4ca4f5..9ca572fb2a1cb5066ddc1a1b3e678d3755863e15 100644 (file)
@@ -11,6 +11,7 @@ from sqlalchemy import DATETIME
 from sqlalchemy import DateTime
 from sqlalchemy import DefaultClause
 from sqlalchemy import Enum
+from sqlalchemy import FetchedValue
 from sqlalchemy import ForeignKey
 from sqlalchemy import ForeignKeyConstraint
 from sqlalchemy import func
@@ -2058,6 +2059,15 @@ class AutogenRenderTest(TestBase):
             "server_default='0', nullable=True)",
         )
 
+    def test_render_server_default_fetched_value(self):
+        c = Column("value", Integer, server_default=FetchedValue())
+        result = autogenerate.render._render_column(c, self.autogen_context)
+        eq_(
+            result,
+            "sa.Column('value', sa.Integer(), "
+            "server_default=sa.FetchedValue(), nullable=True)",
+        )
+
     def test_render_modify_reflected_int_server_default(self):
         op_obj = ops.AlterColumnOp(
             "sometable",