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_4_0b1~416 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9243f6feea676bbaada52293d44e5d069b0f0574;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 --- diff --git a/lib/sqlalchemy/sql/sqltypes.py b/lib/sqlalchemy/sql/sqltypes.py index 05d6ec36b3..af4e4db916 100644 --- a/lib/sqlalchemy/sql/sqltypes.py +++ b/lib/sqlalchemy/sql/sqltypes.py @@ -1541,6 +1541,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 aca9a5b067..4b1fb6a729 100644 --- a/test/sql/test_types.py +++ b/test/sql/test_types.py @@ -1803,6 +1803,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