summaryrefslogtreecommitdiff
path: root/app/models/concerns/bulk_insert_safe.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/concerns/bulk_insert_safe.rb')
-rw-r--r--app/models/concerns/bulk_insert_safe.rb6
1 files changed, 6 insertions, 0 deletions
diff --git a/app/models/concerns/bulk_insert_safe.rb b/app/models/concerns/bulk_insert_safe.rb
index 3748e77e933..908f0b6a7e2 100644
--- a/app/models/concerns/bulk_insert_safe.rb
+++ b/app/models/concerns/bulk_insert_safe.rb
@@ -141,6 +141,12 @@ module BulkInsertSafe
raise ArgumentError, "returns needs to be :ids or nil"
end
+ # Handle insertions for tables with a composite primary key
+ primary_keys = connection.schema_cache.primary_keys(table_name)
+ if unique_by.blank? && primary_key != primary_keys
+ unique_by = primary_keys
+ end
+
transaction do
items.each_slice(batch_size).flat_map do |item_batch|
attributes = _bulk_insert_item_attributes(