From 6f96478e76ad8d2bef0466f31873c107dc7c4fb8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ga=C3=ABtan=20de=20Menten?= Date: Mon, 16 Nov 2009 15:50:25 +0000 Subject: [PATCH] minor speed optimization for PGArray bind & result processors --- lib/sqlalchemy/dialects/postgresql/base.py | 36 +++++++++++++--------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py index 0c386cc29e..e31cc7d91b 100644 --- a/lib/sqlalchemy/dialects/postgresql/base.py +++ b/lib/sqlalchemy/dialects/postgresql/base.py @@ -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 -- 2.47.3