guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/04: Insert derivation inputs in chunks


From: Christopher Baines
Subject: 02/04: Insert derivation inputs in chunks
Date: Sun, 3 Oct 2021 08:04:08 -0400 (EDT)

cbaines pushed a commit to branch master
in repository data-service.

commit 857b4e32d5761aac695348312d6753284d6e2175
Author: Christopher Baines <mail@cbaines.net>
AuthorDate: Sun Oct 3 12:56:23 2021 +0100

    Insert derivation inputs in chunks
    
    To avoid one massive query.
---
 guix-data-service/model/derivation.scm | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/guix-data-service/model/derivation.scm 
b/guix-data-service/model/derivation.scm
index 41c7c39..bc5431e 100644
--- a/guix-data-service/model/derivation.scm
+++ b/guix-data-service/model/derivation.scm
@@ -1354,20 +1354,23 @@ WHERE derivation_source_files.store_path = $1"
           derivations)))
 
     (unless (null? data)
-      (exec-query
-       conn
-       (string-append
-        "
+      (for-each
+       (lambda (chunk)
+         (exec-query
+          conn
+          (string-append
+           "
 INSERT INTO derivation_inputs (derivation_id, derivation_output_id)
 SELECT vals.derivation_id, derivation_outputs.id
 FROM (VALUES "
-        (string-join data ", ")
-        ") AS vals (derivation_id, file_name, output_name)
+           (string-join chunk ", ")
+           ") AS vals (derivation_id, file_name, output_name)
 INNER JOIN derivations
   ON derivations.file_name = vals.file_name
 INNER JOIN derivation_outputs
   ON derivation_outputs.derivation_id = derivations.id
- AND vals.output_name = derivation_outputs.name")))))
+ AND vals.output_name = derivation_outputs.name")))
+       (chunk! data 1000)))))
 
 (define (select-from-derivation-source-files store-paths)
   (string-append



reply via email to

[Prev in Thread] Current Thread [Next in Thread]