1
0
mirror of https://github.com/django/django.git synced 2025-03-13 02:40:47 +00:00

Optimized DatabaseOperations.bulk_insert_sql() a bit on Oracle.

This commit is contained in:
Mariusz Felisiak 2024-03-11 13:24:18 +01:00 committed by GitHub
parent f2c3524959
commit 3592e9fcb1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -669,18 +669,20 @@ END;
return self._get_no_autofield_sequence_name(table) if row is None else row[0]
def bulk_insert_sql(self, fields, placeholder_rows):
field_placeholders = [
BulkInsertMapper.types.get(
getattr(field, "target_field", field).get_internal_type(), "%s"
)
for field in fields
if field
]
query = []
for row in placeholder_rows:
select = []
for i, placeholder in enumerate(row):
# A model without any fields has fields=[None].
if fields[i]:
internal_type = getattr(
fields[i], "target_field", fields[i]
).get_internal_type()
placeholder = (
BulkInsertMapper.types.get(internal_type, "%s") % placeholder
)
placeholder = field_placeholders[i] % placeholder
# Add columns aliases to the first select to avoid "ORA-00918:
# column ambiguously defined" when two or more columns in the
# first select have the same value.