From: david-fed <47917339+david-fed@users.noreply.github.com> Date: Mon, 7 Jul 2025 20:44:15 +0000 (-0400) Subject: Fixed missing prefix on FetchedValue X-Git-Tag: rel_1_16_3~2^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aa2ccd8483bced33b53b0e2b38c0f94f291f344b;p=thirdparty%2Fsqlalchemy%2Falembic.git Fixed missing prefix on FetchedValue 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 --- 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/docs/build/unreleased/1633.rst b/docs/build/unreleased/1633.rst new file mode 100644 index 00000000..3d38f5e7 --- /dev/null +++ b/docs/build/unreleased/1633.rst @@ -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. 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",