From cee21a85ac0353da22eb232a719098fe921c46a7 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 28 Jul 2009 17:12:19 +0000 Subject: [PATCH] boiled down "rendered_returning" etc. into just "returning" --- lib/sqlalchemy/dialects/mssql/base.py | 5 ++--- lib/sqlalchemy/dialects/oracle/cx_oracle.py | 7 +++---- lib/sqlalchemy/sql/compiler.py | 17 ++++++++--------- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py index f1a7cd9aa4..bc30e28226 100644 --- a/lib/sqlalchemy/dialects/mssql/base.py +++ b/lib/sqlalchemy/dialects/mssql/base.py @@ -863,7 +863,7 @@ class MSExecutionContext(default.DefaultExecutionContext): self._enable_identity_insert = False self._select_lastrowid = insert_has_sequence and \ - not self.compiled.rendered_returning and \ + not self.compiled.returning and \ not self._enable_identity_insert and \ not self.executemany @@ -885,8 +885,7 @@ class MSExecutionContext(default.DefaultExecutionContext): if self._enable_identity_insert: self.cursor.execute("SET IDENTITY_INSERT %s OFF" % self.dialect.identifier_preparer.format_table(self.compiled.statement.table)) - if (self.isinsert or self.isupdate or self.isdelete) and \ - self.compiled.rendered_returning: + if self.compiled.returning: self._result_proxy = base.FullyBufferedResultProxy(self) def get_lastrowid(self): diff --git a/lib/sqlalchemy/dialects/oracle/cx_oracle.py b/lib/sqlalchemy/dialects/oracle/cx_oracle.py index 57184774d7..65395467e4 100644 --- a/lib/sqlalchemy/dialects/oracle/cx_oracle.py +++ b/lib/sqlalchemy/dialects/oracle/cx_oracle.py @@ -215,8 +215,7 @@ class Oracle_cx_oracleExecutionContext(DefaultExecutionContext): return base.BufferedColumnResultProxy(self) if hasattr(self, 'out_parameters') and \ - (self.isinsert or self.isupdate or self.isdelete) and \ - self.compiled.rendered_returning: + self.compiled.returning: return ReturningResultProxy(self) else: @@ -226,7 +225,7 @@ class ReturningResultProxy(base.FullyBufferedResultProxy): """Result proxy which stuffs the _returning clause + outparams into the fetch.""" def _cursor_description(self): - returning = self.context.compiled.returning or self.context.compiled.statement._returning + returning = self.context.compiled.returning ret = [] for c in returning: @@ -237,7 +236,7 @@ class ReturningResultProxy(base.FullyBufferedResultProxy): return ret def _buffer_rows(self): - returning = self.context.compiled.returning or self.context.compiled.statement._returning + returning = self.context.compiled.returning return [tuple(self.context.out_parameters["ret_%d" % i] for i, c in enumerate(returning))] class Oracle_cx_oracle(OracleDialect): diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index 79ed44e1ba..22fe956cb8 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -161,7 +161,7 @@ class SQLCompiler(engine.Compiled): # level to define if this Compiled instance represents # INSERT/UPDATE/DELETE isdelete = isinsert = isupdate = False - rendered_returning = False + returning = None def __init__(self, dialect, statement, column_keys=None, inline=False, **kwargs): """Construct a new ``DefaultCompiler`` object. @@ -698,8 +698,8 @@ class SQLCompiler(engine.Compiled): for c in colparams]) if self.returning or insert_stmt._returning: - returning_clause = self.returning_clause(insert_stmt, self.returning or insert_stmt._returning) - self.rendered_returning = True + self.returning = self.returning or insert_stmt._returning + returning_clause = self.returning_clause(insert_stmt, self.returning) # cheating if returning_clause.startswith("OUTPUT"): @@ -710,7 +710,7 @@ class SQLCompiler(engine.Compiled): text += " VALUES (%s)" % \ ', '.join([c[1] for c in colparams]) - if (self.returning or insert_stmt._returning) and returning_clause: + if self.returning and returning_clause: text += " " + returning_clause return text @@ -730,8 +730,8 @@ class SQLCompiler(engine.Compiled): ) if update_stmt._returning: + self.returning = update_stmt._returning returning_clause = self.returning_clause(update_stmt, update_stmt._returning) - self.rendered_returning = True if returning_clause.startswith("OUTPUT"): text += " " + returning_clause returning_clause = None @@ -739,7 +739,7 @@ class SQLCompiler(engine.Compiled): if update_stmt._whereclause: text += " WHERE " + self.process(update_stmt._whereclause) - if update_stmt._returning and returning_clause: + if self.returning and returning_clause: text += " " + returning_clause self.stack.pop(-1) @@ -863,9 +863,8 @@ class SQLCompiler(engine.Compiled): text = "DELETE FROM " + self.preparer.format_table(delete_stmt.table) if delete_stmt._returning: - returning_clause = self.returning_clause(delete_stmt, delete_stmt._returning) - self.rendered_returning = True self.returning = delete_stmt._returning + returning_clause = self.returning_clause(delete_stmt, delete_stmt._returning) if returning_clause.startswith("OUTPUT"): text += " " + returning_clause returning_clause = None @@ -873,7 +872,7 @@ class SQLCompiler(engine.Compiled): if delete_stmt._whereclause: text += " WHERE " + self.process(delete_stmt._whereclause) - if delete_stmt._returning and returning_clause: + if self.returning and returning_clause: text += " " + returning_clause self.stack.pop(-1) -- 2.47.3