#36144: DatabaseOperations.bulk_batch_size() should consider more database 
limits
on SQLite and Oracle
-------------------------------------+-------------------------------------
     Reporter:  Sarah Boyce          |                     Type:
                                     |  Cleanup/optimization
       Status:  new                  |                Component:  Database
                                     |  layer (models, ORM)
      Version:  5.1                  |                 Severity:  Normal
     Keywords:                       |             Triage Stage:
                                     |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
 `DatabaseOperations.bulk_batch_size()` is used to calculate the maximum
 batch size when doing operations such as bulk_update and bulk_create

 When investigating the impact of composite primary keys on the maximum
 batch size calculation for `bulk_update()`, it became clear that there are
 more database limits that need to be considered when calculating the
 maximum batch size in order to have a bullet proof solution.

 One possible limit in play on SQLite is `SQLITE_MAX_EXPR_DEPTH` which is
 1000 (see https://www.sqlite.org/limits.html#max_expr_depth).
 On Oracle, we found that a query could error with the ambiguous message:
 `ORA-00907: missing right parenthesis`, which may be due to hitting some
 limit (possibly documented here:
 https://docs.oracle.com/en/database/oracle/oracle-database/23/lnpls/plsql-
 program-limits.html)

 We may need to revisit the API design.

 PR discussion:
 https://github.com/django/django/pull/19088#discussion_r1929940327
-- 
Ticket URL: <https://code.djangoproject.com/ticket/36144>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/django-updates/01070194a701ebe9-9de89bed-272f-442b-a267-12a7651c892a-000000%40eu-central-1.amazonses.com.

Reply via email to