From: Gaƫtan de Menten Date: Mon, 16 Nov 2009 15:50:25 +0000 (+0000) Subject: minor speed optimization for PGArray bind & result processors X-Git-Tag: rel_0_6beta1~163 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6f96478e76ad8d2bef0466f31873c107dc7c4fb8;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git minor speed optimization for PGArray bind & result processors --- 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