diff options
Diffstat (limited to 'lib/sqlalchemy/orm/persistence.py')
-rw-r--r-- | lib/sqlalchemy/orm/persistence.py | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/sqlalchemy/orm/persistence.py b/lib/sqlalchemy/orm/persistence.py index cc7e321b4..b8368001b 100644 --- a/lib/sqlalchemy/orm/persistence.py +++ b/lib/sqlalchemy/orm/persistence.py @@ -801,7 +801,7 @@ def _emit_update_statements( ) return_defaults = True - if mapper.version_id_col is not None: + if mapper._version_id_has_server_side_value: statement = statement.return_defaults(mapper.version_id_col) return_defaults = True @@ -1268,13 +1268,16 @@ def _emit_post_update_statements( stmt = table.update().where(clauses) - if mapper.version_id_col is not None: - stmt = stmt.return_defaults(mapper.version_id_col) - return stmt statement = base_mapper._memo(("post_update", table), update_stmt) + if mapper._version_id_has_server_side_value: + statement = statement.return_defaults(mapper.version_id_col) + return_defaults = True + else: + return_defaults = False + # execute each UPDATE in the order according to the original # list of states to guarantee row access order, but # also group them into common (connection, cols) sets @@ -1290,7 +1293,7 @@ def _emit_post_update_statements( assert_singlerow = ( connection.dialect.supports_sane_rowcount - if mapper.version_id_col is None + if not return_defaults else connection.dialect.supports_sane_rowcount_returning ) assert_multirow = ( |