]> 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:20:22 +0000 (16:20 -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
(cherry picked from commit 9243f6feea676bbaada52293d44e5d069b0f0574)

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

index 2d800f77544eadc191bf991a630a40d4fa040e73..d2dab762c1eca4078cb9cf4f7e8dd9fe27f02448 100644 (file)
@@ -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)
 
index 5be780beb3d7a05c02f6b726d1c5983c3b4d1a61..46d8f264c02680038cf3dff7e0a7f0782cb63907 100644 (file)
@@ -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