Skip to content

Commit 3883ac3

Browse files
committed
Fix bulk_batch_size
plus a small fix for bulk_update Issue #71, large bulk_batch_size cause queries exceeding 2100 parameters limit.
1 parent b44acfd commit 3883ac3

File tree

2 files changed

+3
-2
lines changed

2 files changed

+3
-2
lines changed

mssql/functions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ def bulk_update_with_default(self, objs, fields, batch_size=None, default=0):
259259
attr = Value(attr, output_field=field)
260260
when_statements.append(When(pk=obj.pk, then=attr))
261261
if(value_none_counter == len(when_statements)):
262-
case_statement = Case(*when_statements, output_field=field, default=default)
262+
case_statement = Case(*when_statements, output_field=field, default=Value(default))
263263
else:
264264
case_statement = Case(*when_statements, output_field=field)
265265
if requires_casting:

mssql/operations.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ def bulk_batch_size(self, fields, objs):
6262
# up 2 parameters but I've had this error when sending 2098 parameters.
6363
max_query_params = 2050
6464
# inserts are capped at 1000 rows regardless of number of query params.
65-
return min(max_insert_rows, max_query_params // fields_len)
65+
# bulk_update CASE...WHEN...THEN statement sometimes takes 2 parameters per field
66+
return min(max_insert_rows, max_query_params // fields_len // 2)
6667

6768
def bulk_insert_sql(self, fields, placeholder_rows):
6869
placeholder_rows_sql = (", ".join(row) for row in placeholder_rows)

0 commit comments

Comments
 (0)