summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/databases/postgres.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-10-27 17:41:30 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-10-27 17:41:30 +0000
commit4a4daad81a6c5f987ac6eba0afdaccb3a70554f8 (patch)
treec5d4286d3b318774a518f31a31a66e99286c0a1e /lib/sqlalchemy/databases/postgres.py
parentcba1e9a01ef292a5bb7fdd4e0c62f4f7509f38b9 (diff)
downloadsqlalchemy-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.py32
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):