From 42ac51212f6f295891fb3bfe2e8c679ea6fc0316 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Wed, 9 Jul 2025 12:51:47 +0100 Subject: [PATCH] Use bulk-insert for inserting derivation_sources --- guix-data-service/model/derivation.scm | 27 +++++++++++++------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/guix-data-service/model/derivation.scm b/guix-data-service/model/derivation.scm index f6a2d0d..801a9b8 100644 --- a/guix-data-service/model/derivation.scm +++ b/guix-data-service/model/derivation.scm @@ -1456,18 +1456,6 @@ ON CONFLICT DO NOTHING"))) query-parts))) (define (insert-derivation-sources conn derivation-id sources) - (define (insert-into-derivation-sources derivation-source-file-ids) - (string-append - "INSERT INTO derivation_sources " - "(derivation_id, derivation_source_file_id) VALUES " - (string-join - (map (lambda (derivation-source-file-id) - (simple-format - #f "(~A, ~A)" derivation-id derivation-source-file-id)) - (vector->list derivation-source-file-ids)) - ",") - "ON CONFLICT DO NOTHING;")) - (let ((sources-ids (insert-missing-data-and-return-all-ids conn @@ -1476,8 +1464,19 @@ ON CONFLICT DO NOTHING"))) (list->vector (map list sources))))) - (exec-query conn - (insert-into-derivation-sources sources-ids)) + (bulk-insert + conn + "derivation_sources" + '(derivation_id derivation_source_file_id) + (vector-fold + (lambda (_ result derivation-source-file-id) + (cons + (list derivation-id + derivation-source-file-id) + result)) + '() + sources-ids) + #:returning #f) sources-ids))