diff options
| author | Gaëtan de Menten <gdementen@gmail.com> | 2009-11-16 15:50:25 +0000 |
|---|---|---|
| committer | Gaëtan de Menten <gdementen@gmail.com> | 2009-11-16 15:50:25 +0000 |
| commit | 6f96478e76ad8d2bef0466f31873c107dc7c4fb8 (patch) | |
| tree | 938fe5bed1850d8130db24ac11621a8d1a2b6069 /lib/sqlalchemy/dialects/postgresql | |
| parent | 734dce8b60320791efc85005f6a9dde116ff8898 (diff) | |
| download | sqlalchemy-6f96478e76ad8d2bef0466f31873c107dc7c4fb8.tar.gz | |
minor speed optimization for PGArray bind & result processors
Diffstat (limited to 'lib/sqlalchemy/dialects/postgresql')
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/base.py | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py index 0c386cc29..e31cc7d91 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 |
