]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Merge branch 'master' into ticket_3100
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 18 Aug 2014 21:44:35 +0000 (17:44 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 18 Aug 2014 21:44:35 +0000 (17:44 -0400)
Conflicts:
lib/sqlalchemy/orm/mapper.py
lib/sqlalchemy/orm/persistence.py

1  2 
lib/sqlalchemy/orm/persistence.py

index 782d94dc8a07072c620b40225816176d790c1308,e36f87991d470cf1d6b971016c414fac7497995f..8d3e90cf4567a53fe39751f5cbc24b4d2a4fdcc9
@@@ -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(