cbaines pushed a commit to branch trunk in repository data-service. commit 7fe042498f44805a03076bd1d63fe25b3940979e Author: Christopher Baines <m...@cbaines.net> AuthorDate: Mon Mar 17 10:34:06 2025 +0000
Tweak using vectors in insert-derivation-outputs --- guix-data-service/model/derivation.scm | 77 +++++++++++++++++----------------- 1 file changed, 39 insertions(+), 38 deletions(-) diff --git a/guix-data-service/model/derivation.scm b/guix-data-service/model/derivation.scm index 6ee7de1..53aaa40 100644 --- a/guix-data-service/model/derivation.scm +++ b/guix-data-service/model/derivation.scm @@ -1048,46 +1048,47 @@ ON CONFLICT DO NOTHING" (number->string derivation_output_details_set_id)))) (let* ((derivation-outputs - (map cdr names-and-derivation-outputs)) - (derivation-output-paths - (map derivation-output-path - derivation-outputs)) - (derivation-output-names - (map car names-and-derivation-outputs)) - - (derivation-output-details-ids - (derivation-output-details->derivation-output-details-ids - conn - (map - (match-lambda - (($ <derivation-output> path hash-algo hash recursive?) - `((path . ,path) - (hash_algorithm . ,(or (and=> hash-algo symbol->string) - NULL)) - (hash . ,(or (and=> hash bytevector->base16-string) - NULL)) - (recursive . ,recursive?)))) - derivation-outputs)))) - - (insert-missing-data - conn - "derivation_outputs" - '(derivation_id name derivation_output_details_id) - (list->vector - (map (lambda (output-name derivation-output-details-id) - (list derivation-id - output-name - derivation-output-details-id)) - derivation-output-names - (vector->list derivation-output-details-ids)))) - - (insert-into-derivations-by-output-details-set - (derivation-output-details-ids->derivation-output-details-set-id - conn - derivation-output-details-ids)) - + (map cdr names-and-derivation-outputs)) + (derivation-output-paths + (map derivation-output-path + derivation-outputs)) + (derivation-output-details-ids + (derivation-output-details->derivation-output-details-ids + conn + (map + (match-lambda + (($ <derivation-output> path hash-algo hash recursive?) + `((path . ,path) + (hash_algorithm . ,(or (and=> hash-algo symbol->string) + NULL)) + (hash . ,(or (and=> hash bytevector->base16-string) + NULL)) + (recursive . ,recursive?)))) + derivation-outputs)))) + + (insert-missing-data + conn + "derivation_outputs" + '(derivation_id name derivation_output_details_id) + (let ((vec + (list->vector + (map car names-and-derivation-outputs)))) + (vector-map! + (lambda (_ output-name derivation-output-details-id) + (list derivation-id + output-name + derivation-output-details-id)) + vec + derivation-output-details-ids) + vec)) + + (insert-into-derivations-by-output-details-set + (derivation-output-details-ids->derivation-output-details-set-id + conn derivation-output-details-ids)) + derivation-output-details-ids)) + (define (select-derivation-by-file-name-hash conn file-name-hash) (define query (string-append