From 3637b8a8226a1988c6a83aa250f664fef16df8bd Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 6 Apr 2020 16:19:23 -0400 Subject: [PATCH] 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) --- lib/sqlalchemy/sql/sqltypes.py | 1 + test/sql/test_types.py | 12 ++++++++++++ 2 files changed, 13 insertions(+) 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 -- 2.47.2