[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