]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
implement UUID roundtrip 7563/head
authorJosé Duarte <duarte@dystematic.com>
Thu, 13 Jan 2022 21:33:31 +0000 (21:33 +0000)
committerJosé Duarte <duarte@dystematic.com>
Thu, 13 Jan 2022 21:33:31 +0000 (21:33 +0000)
lib/sqlalchemy/dialects/postgresql/base.py
test/dialect/postgresql/test_types.py

index 3a055429ed99ad3dec242e08f549d7d92d2fdeac..4f3e297ef557d47431b3fe274c6370b26ba08ecd 100644 (file)
@@ -1751,12 +1751,22 @@ class UUID(sqltypes.TypeEngine):
             return None
 
     def literal_processor(self, dialect):
-        bp = self.bind_processor(dialect)
+        if self.as_uuid:
+
+            def process(value):
+                if value is not None:
+                    value = "'%s'::UUID" % value
+                return value
+
+            return process
+        else:
 
-        def process(value):
-            return "'%s'" % bp(value)
+            def process(value):
+                if value is not None:
+                    value = "'%s'" % value
+                return value
 
-        return process
+            return process
 
 
 PGUuid = UUID
index e3dd4ae5c8d0ee9e32de89bcfd6a291ee111dac5..991b0ed9d4a01a2723de3a7cd67a913e41b9c803 100644 (file)
@@ -2793,40 +2793,27 @@ class UUIDTest(fixtures.TestBase):
             "not_as_uuid",
             postgresql.UUID(as_uuid=False),
             str(uuid.uuid4()),
-            str(uuid.uuid4()),
         ),
         (
             "as_uuid",
             postgresql.UUID(as_uuid=True),
             uuid.uuid4(),
-            uuid.uuid4(),
         ),
-        id_="iaaa",
-        argnames="datatype, value1, value2",
+        id_="iaa",
+        argnames="datatype, value1",
     )
-    def test_uuid_literal(self, datatype, value1, value2, connection):
+    def test_uuid_literal(self, datatype, value1, connection):
         v1 = connection.execute(
             select(
                 bindparam(
-                    "uuid_literal",
-                    literal_execute=True,
-                    type_=datatype,
-                )
-            ),
-            uuid_literal=value1,
-        ).first()
-        v2 = connection.execute(
-            select(
-                bindparam(
-                    "uuid_literal",
+                    "key",
+                    value=value1,
                     literal_execute=True,
                     type_=datatype,
                 )
             ),
-            uuid_literal=value2,
-        ).first()
-        eq_(v1, value1)
-        eq_(v2, value2)
+        )
+        eq_(v1.fetchone()[0], value1)
 
 
 class HStoreTest(AssertsCompiledSQL, fixtures.TestBase):