#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.