From: Mike Bayer Date: Mon, 6 Apr 2020 20:19:23 +0000 (-0400) Subject: Ensure length parameter of Enum is adapted to new objects X-Git-Tag: rel_1_3_16~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3637b8a8226a1988c6a83aa250f664fef16df8bd;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Ensure length parameter of Enum is adapted to new objects Ensure length parameter added to Enum in Iea05dc8cd9e33959bb968b394fb10a7dd068c873 is correctly propagated to new enum objects adapted from this one. Fixes: #5183 ` Change-Id: I7f20d926f73ec8260938963df87e29894c7e55e2 (cherry picked from commit 9243f6feea676bbaada52293d44e5d069b0f0574) --- diff --git a/lib/sqlalchemy/sql/sqltypes.py b/lib/sqlalchemy/sql/sqltypes.py index 2d800f7754..d2dab762c1 100644 --- a/lib/sqlalchemy/sql/sqltypes.py +++ b/lib/sqlalchemy/sql/sqltypes.py @@ -1557,6 +1557,7 @@ class Enum(Emulated, String, SchemaType): kw.setdefault("native_enum", self.native_enum) kw.setdefault("values_callable", self.values_callable) kw.setdefault("create_constraint", self.create_constraint) + kw.setdefault("length", self.length) assert "_enums" in kw return impltype(**kw) diff --git a/test/sql/test_types.py b/test/sql/test_types.py index 5be780beb3..46d8f264c0 100644 --- a/test/sql/test_types.py +++ b/test/sql/test_types.py @@ -1800,6 +1800,18 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest): eq_(e1_vc.adapt(ENUM).name, "someotherenum") eq_(e1_vc.adapt(ENUM).enums, ["1", "2", "3", "a", "b"]) + def test_adapt_length(self): + from sqlalchemy.dialects.postgresql import ENUM + + e1 = Enum("one", "two", "three", length=50, native_enum=False) + eq_(e1.adapt(ENUM).length, 50) + eq_(e1.adapt(Enum).length, 50) + + e1 = Enum("one", "two", "three") + eq_(e1.length, 5) + eq_(e1.adapt(ENUM).length, 5) + eq_(e1.adapt(Enum).length, 5) + @testing.provide_metadata def test_create_metadata_bound_no_crash(self): m1 = self.metadata