Skip to content

Commit 531ee29

Browse files
zzzeekGerrit Code Review
authored andcommitted
Merge "Fixed missing prefix on FetchedValue" into main
2 parents 7fd2b1f + aa2ccd8 commit 531ee29

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

alembic/autogenerate/render.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -813,6 +813,8 @@ def _render_server_default(
813813
return _render_potential_expr(
814814
default.arg, autogen_context, is_server_default=True
815815
)
816+
elif isinstance(default, sa_schema.FetchedValue):
817+
return _render_fetched_value(autogen_context)
816818

817819
if isinstance(default, str) and repr_:
818820
default = repr(re.sub(r"^'|'$", "", default))
@@ -850,6 +852,12 @@ def _render_identity(
850852
}
851853

852854

855+
def _render_fetched_value(autogen_context: AutogenContext) -> str:
856+
return "%(prefix)sFetchedValue()" % {
857+
"prefix": _sqlalchemy_autogenerate_prefix(autogen_context),
858+
}
859+
860+
853861
def _repr_type(
854862
type_: TypeEngine,
855863
autogen_context: AutogenContext,

docs/build/unreleased/1633.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
.. change::
2+
:tags: bug, autogenerate
3+
:tickets: 1633
4+
5+
Fixed the rendering of ``server_default=FetchedValue()`` to ensure it is
6+
preceded by the ``sa.`` prefix in the migration script. Pull request
7+
courtesy david-fed.

tests/test_autogen_render.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from sqlalchemy import DateTime
1212
from sqlalchemy import DefaultClause
1313
from sqlalchemy import Enum
14+
from sqlalchemy import FetchedValue
1415
from sqlalchemy import ForeignKey
1516
from sqlalchemy import ForeignKeyConstraint
1617
from sqlalchemy import func
@@ -2083,6 +2084,15 @@ def test_render_server_default_int(self):
20832084
"server_default='0', nullable=True)",
20842085
)
20852086

2087+
def test_render_server_default_fetched_value(self):
2088+
c = Column("value", Integer, server_default=FetchedValue())
2089+
result = autogenerate.render._render_column(c, self.autogen_context)
2090+
eq_(
2091+
result,
2092+
"sa.Column('value', sa.Integer(), "
2093+
"server_default=sa.FetchedValue(), nullable=True)",
2094+
)
2095+
20862096
def test_render_modify_reflected_int_server_default(self):
20872097
op_obj = ops.AlterColumnOp(
20882098
"sometable",

0 commit comments

Comments
 (0)