diff options
author | Christopher Baines <mail@cbaines.net> | 2022-11-11 11:10:29 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2022-11-11 11:29:37 +0000 |
commit | 0f22e3ab4078bf35a8f7468004cf764d92904b77 (patch) | |
tree | b75c94f146198476f5c4972d20530af0846ed488 | |
parent | 4101c6b89724b0f4e25c54e853dcdc6d6a6ae562 (diff) | |
download | data-service-0f22e3ab4078bf35a8f7468004cf764d92904b77.tar data-service-0f22e3ab4078bf35a8f7468004cf764d92904b77.tar.gz |
Rework insert-blocked-builds to make it more efficient
This also fixes a typo in the partition name.
-rw-r--r-- | guix-data-service/model/blocked-builds.scm | 39 |
1 files changed, 18 insertions, 21 deletions
diff --git a/guix-data-service/model/blocked-builds.scm b/guix-data-service/model/blocked-builds.scm index cc033f6..e90aaca 100644 --- a/guix-data-service/model/blocked-builds.scm +++ b/guix-data-service/model/blocked-builds.scm @@ -133,24 +133,17 @@ WHERE NOT EXISTS ( (list (number->string build-id) build-server-id))) -(define (insert-blocked-builds conn data) - (define (create-partitions) - (for-each - (lambda (build-server-id) - (exec-query - conn - (string-append - " -CREATE TABLE IF NOT EXISTS blocked_builds_build_server__" - (number->string build-server-id) " +(define (insert-blocked-builds conn build-server-id data) + (define (create-partition) + (exec-query + conn + (string-append + " +CREATE TABLE IF NOT EXISTS blocked_builds_build_server_" + (number->string build-server-id) " PARTITION OF blocked_builds FOR VALUES IN (" - (number->string build-server-id) - ")"))) - (delete-duplicates - (map (lambda (fields) - (string->number (car fields))) - data) - =))) + (number->string build-server-id) + ")"))) (define (try-insert) (exec-query @@ -165,8 +158,11 @@ INSERT INTO blocked_builds ( VALUES " (string-join (map (match-lambda - ((a b c) - (simple-format #f "(~A, ~A, ~A)" a b c))) + ((b c) + (simple-format #f "(~A, ~A, ~A)" + build-server-id + b + c))) data) ", ") " @@ -197,6 +193,7 @@ WHERE id = $1") (unless (null? blocking-derivation-output-details-set-ids) (insert-blocked-builds conn + build-server-id (map (lambda (blocking-derivation-output-details-set-id) (list build-server-id @@ -242,10 +239,10 @@ WHERE builds.id IN (" blocking-derivation-output-details-set-id))) (insert-blocked-builds conn + build-server-id (map (lambda (blocked-derivation-output-details-set-id) - (list build-server-id - blocked-derivation-output-details-set-id + (list blocked-derivation-output-details-set-id blocking-derivation-output-details-set-id)) blocked-derivation-output-details-set-ids))))) (exec-query |