Added an implementation of bulk insert via the ORM to the Oracle DB backend.
Refs #7596, r16739 and http://troels.arvin.dk/db/rdbms/#insert-multiple git-svn-id: http://code.djangoproject.com/svn/django/trunk@16819 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
26b8122087
commit
9fe050a275
|
@ -78,6 +78,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
|
||||||
supports_bitwise_or = False
|
supports_bitwise_or = False
|
||||||
can_defer_constraint_checks = True
|
can_defer_constraint_checks = True
|
||||||
ignores_nulls_in_unique_constraints = False
|
ignores_nulls_in_unique_constraints = False
|
||||||
|
has_bulk_insert = True
|
||||||
|
|
||||||
class DatabaseOperations(BaseDatabaseOperations):
|
class DatabaseOperations(BaseDatabaseOperations):
|
||||||
compiler_module = "django.db.backends.oracle.compiler"
|
compiler_module = "django.db.backends.oracle.compiler"
|
||||||
|
@ -372,6 +373,10 @@ WHEN (new.%(col_name)s IS NULL)
|
||||||
name_length = self.max_name_length() - 3
|
name_length = self.max_name_length() - 3
|
||||||
return '%s_TR' % util.truncate_name(table, name_length).upper()
|
return '%s_TR' % util.truncate_name(table, name_length).upper()
|
||||||
|
|
||||||
|
def bulk_insert_sql(self, fields, num_values):
|
||||||
|
items_sql = "SELECT %s FROM DUAL" % ", ".join(["%s"] * len(fields))
|
||||||
|
return " UNION ALL ".join([items_sql] * num_values)
|
||||||
|
|
||||||
|
|
||||||
class _UninitializedOperatorsDescriptor(object):
|
class _UninitializedOperatorsDescriptor(object):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue