From: Mike Bayer Date: Mon, 18 Aug 2014 21:44:35 +0000 (-0400) Subject: Merge branch 'master' into ticket_3100 X-Git-Tag: rel_1_0_0b1~216 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c65ed17bc1f02260f5d13b8a97fb103d682a091b;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Merge branch 'master' into ticket_3100 Conflicts: lib/sqlalchemy/orm/mapper.py lib/sqlalchemy/orm/persistence.py --- c65ed17bc1f02260f5d13b8a97fb103d682a091b diff --cc lib/sqlalchemy/orm/persistence.py index 782d94dc8a,e36f87991d..8d3e90cf45 --- a/lib/sqlalchemy/orm/persistence.py +++ b/lib/sqlalchemy/orm/persistence.py @@@ -613,24 -508,40 +601,41 @@@ def _emit_update_statements(base_mapper c = connection.execute( statement.values(value_params), params) - _postfetch( - mapper, - uowtransaction, - table, - state, - state_dict, - c, - c.context.compiled_parameters[0], - value_params) + if bookkeeping: + _postfetch( + mapper, + uowtransaction, + table, + state, + state_dict, + c, + c.context.compiled_parameters[0], + value_params) rows += c.rowcount else: - multiparams = [rec[2] for rec in records] - c = cached_connections[connection].\ - execute(statement, multiparams) + if needs_version_id and \ + not connection.dialect.supports_sane_multi_rowcount and \ + connection.dialect.supports_sane_rowcount: + for state, state_dict, params, mapper, \ + connection, value_params in records: + c = cached_connections[connection].\ + execute(statement, params) + _postfetch( + mapper, + uowtransaction, + table, + state, + state_dict, + c, + c.context.compiled_parameters[0], + value_params) + rows += c.rowcount + else: + multiparams = [rec[2] for rec in records] + c = cached_connections[connection].\ + execute(statement, multiparams) - rows += c.rowcount - if bookkeeping: + rows += c.rowcount for state, state_dict, params, mapper, \ connection, value_params in records: _postfetch(