From 468ad598c7975d240c3b9911585b3367f32900af Mon Sep 17 00:00:00 2001 From: david-fed <47917339+david-fed@users.noreply.github.com> Date: Mon, 7 Jul 2025 22:33:30 +0200 Subject: [PATCH] Fixed missing prefix on FetchedValue - Fixes: #1633 --- alembic/autogenerate/render.py | 8 ++++++++ tests/test_autogen_render.py | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/alembic/autogenerate/render.py b/alembic/autogenerate/render.py index bd20ced8..64fe72b1 100644 --- a/alembic/autogenerate/render.py +++ b/alembic/autogenerate/render.py @@ -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/tests/test_autogen_render.py b/tests/test_autogen_render.py index c098aca4..9ca572fb 100644 --- a/tests/test_autogen_render.py +++ b/tests/test_autogen_render.py @@ -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", -- 2.47.3