]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- support dialects w/o sane multi row count again
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 16 Aug 2014 17:46:15 +0000 (13:46 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 16 Aug 2014 17:46:15 +0000 (13:46 -0400)
lib/sqlalchemy/orm/persistence.py

index b7283e48e2abb60ecf8f0fbee492ad2b8c6538f8..8c9b677feaf522bae7fbf02bbfb7279bc129bb55 100644 (file)
@@ -529,22 +529,40 @@ def _emit_update_statements(base_mapper, uowtransaction,
                     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
-            for state, state_dict, params, mapper, \
-                    connection, value_params in records:
-                _postfetch(
-                    mapper,
-                    uowtransaction,
-                    table,
-                    state,
-                    state_dict,
-                    c,
-                    c.context.compiled_parameters[0],
-                    value_params)
+                rows += c.rowcount
+                for state, state_dict, params, mapper, \
+                        connection, value_params in records:
+                    _postfetch(
+                        mapper,
+                        uowtransaction,
+                        table,
+                        state,
+                        state_dict,
+                        c,
+                        c.context.compiled_parameters[0],
+                        value_params)
 
         if connection.dialect.supports_sane_rowcount:
             if rows != len(records):