]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Ensure length parameter of Enum is adapted to new objects
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 6 Apr 2020 20:19:23 +0000 (16:19 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 6 Apr 2020 20:19:23 +0000 (16:19 -0400)
Ensure length parameter added to Enum in
Iea05dc8cd9e33959bb968b394fb10a7dd068c873 is correctly propagated
to new enum objects adapted from this one.

Fixes: #5183
`

Change-Id: I7f20d926f73ec8260938963df87e29894c7e55e2

lib/sqlalchemy/sql/sqltypes.py
test/sql/test_types.py

index 05d6ec36b391af7d4d8f79eb67966bd21d025840..af4e4db916ae97a04b040e5722f95c466221ed7c 100644 (file)
@@ -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)
 
index aca9a5b067cb91a47822f7265c46d420f34f90ad..4b1fb6a729f131af92b31b9147e4bc2e81af7d23 100644 (file)
@@ -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