diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-10-27 17:41:30 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-10-27 17:41:30 +0000 |
commit | 4a4daad81a6c5f987ac6eba0afdaccb3a70554f8 (patch) | |
tree | c5d4286d3b318774a518f31a31a66e99286c0a1e /lib/sqlalchemy/databases/postgres.py | |
parent | cba1e9a01ef292a5bb7fdd4e0c62f4f7509f38b9 (diff) | |
download | sqlalchemy-4a4daad81a6c5f987ac6eba0afdaccb3a70554f8.tar.gz |
- removed regular expression step from most statement compilations.
also fixes [ticket:833]
- inlining on PG with_returning() call
- extra options added for profiling
Diffstat (limited to 'lib/sqlalchemy/databases/postgres.py')
-rw-r--r-- | lib/sqlalchemy/databases/postgres.py | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/lib/sqlalchemy/databases/postgres.py b/lib/sqlalchemy/databases/postgres.py index 018074b67..6449bdc14 100644 --- a/lib/sqlalchemy/databases/postgres.py +++ b/lib/sqlalchemy/databases/postgres.py @@ -648,27 +648,31 @@ class PGCompiler(compiler.DefaultCompiler): return super(PGCompiler, self).for_update_clause(select) def _append_returning(self, text, stmt): - returning_cols = stmt.kwargs.get('postgres_returning', None) - if returning_cols: - def flatten_columnlist(collist): - for c in collist: - if isinstance(c, expression.Selectable): - for co in c.columns: - yield co - else: - yield c - columns = [self.process(c) for c in flatten_columnlist(returning_cols)] - text += ' RETURNING ' + string.join(columns, ', ') - + returning_cols = stmt.kwargs['postgres_returning'] + def flatten_columnlist(collist): + for c in collist: + if isinstance(c, expression.Selectable): + for co in c.columns: + yield co + else: + yield c + columns = [self.process(c) for c in flatten_columnlist(returning_cols)] + text += ' RETURNING ' + string.join(columns, ', ') return text def visit_update(self, update_stmt): text = super(PGCompiler, self).visit_update(update_stmt) - return self._append_returning(text, update_stmt) + if 'postgres_returning' in update_stmt.kwargs: + return self._append_returning(text, update_stmt) + else: + return text def visit_insert(self, insert_stmt): text = super(PGCompiler, self).visit_insert(insert_stmt) - return self._append_returning(text, insert_stmt) + if 'postgres_returning' in insert_stmt.kwargs: + return self._append_returning(text, insert_stmt) + else: + return text class PGSchemaGenerator(compiler.SchemaGenerator): def get_column_specification(self, column, **kwargs): |