From: david-fed <47917339+david-fed@users.noreply.github.com> Date: Mon, 7 Jul 2025 20:33:30 +0000 (+0200) Subject: Fixed missing prefix on FetchedValue - Fixes: #1633 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F1691%2Fhead;p=thirdparty%2Fsqlalchemy%2Falembic.git Fixed missing prefix on FetchedValue - Fixes: #1633 --- 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",