]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
minor speed optimization for PGArray bind & result processors
authorGaëtan de Menten <gdementen@gmail.com>
Mon, 16 Nov 2009 15:50:25 +0000 (15:50 +0000)
committerGaëtan de Menten <gdementen@gmail.com>
Mon, 16 Nov 2009 15:50:25 +0000 (15:50 +0000)
lib/sqlalchemy/dialects/postgresql/base.py

index 0c386cc29e2b68fd4b2f9e00f47c679cd3a78a0a..e31cc7d91b8707dfb98e69eb98f8a6bd96f70e01 100644 (file)
@@ -160,33 +160,41 @@ class ARRAY(sqltypes.MutableType, sqltypes.Concatenable, sqltypes.TypeEngine):
         
     def bind_processor(self, dialect):
         item_proc = self.item_type.bind_processor(dialect)
-        def process(value):
-            if value is None:
-                return value
+        if item_proc:
             def convert_item(item):
                 if isinstance(item, (list, tuple)):
                     return [convert_item(child) for child in item]
                 else:
-                    if item_proc:
-                        return item_proc(item)
-                    else:
-                        return item
+                    return item_proc(item)
+        else:
+            def convert_item(item):
+                if isinstance(item, (list, tuple)):
+                    return [convert_item(child) for child in item]
+                else:
+                    return item
+        def process(value):
+            if value is None:
+                return value
             return [convert_item(item) for item in value]
         return process
 
     def result_processor(self, dialect, coltype):
         item_proc = self.item_type.result_processor(dialect, coltype)
-        def process(value):
-            if value is None:
-                return value
+        if item_proc:
             def convert_item(item):
                 if isinstance(item, list):
                     return [convert_item(child) for child in item]
                 else:
-                    if item_proc:
-                        return item_proc(item)
-                    else:
-                        return item
+                    return item_proc(item)
+        else:
+            def convert_item(item):
+                if isinstance(item, list):
+                    return [convert_item(child) for child in item]
+                else:
+                    return item
+        def process(value):
+            if value is None:
+                return value
             return [convert_item(item) for item in value]
         return process
 PGArray = ARRAY