diff options
author | Christopher Baines <mail@cbaines.net> | 2022-11-11 11:29:08 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2022-11-11 11:29:45 +0000 |
commit | 48d8ee885a6ca32a0984c429f085993e0669c8fb (patch) | |
tree | bfe6a3a1343402e19e92c84a47804e3f9795fd04 /guix-data-service | |
parent | 0f22e3ab4078bf35a8f7468004cf764d92904b77 (diff) | |
download | data-service-48d8ee885a6ca32a0984c429f085993e0669c8fb.tar data-service-48d8ee885a6ca32a0984c429f085993e0669c8fb.tar.gz |
Have insert-blocked-builds cache when the partitions exist
To make it more efficient.
Diffstat (limited to 'guix-data-service')
-rw-r--r-- | guix-data-service/model/blocked-builds.scm | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/guix-data-service/model/blocked-builds.scm b/guix-data-service/model/blocked-builds.scm index e90aaca..635a63b 100644 --- a/guix-data-service/model/blocked-builds.scm +++ b/guix-data-service/model/blocked-builds.scm @@ -133,19 +133,26 @@ WHERE NOT EXISTS ( (list (number->string build-id) build-server-id))) +(define %created-partitions + '()) + (define (insert-blocked-builds conn build-server-id data) - (define (create-partition) - (exec-query - conn - (string-append - " + (unless (null? data) + (unless (member build-server-id %created-partitions) + (exec-query + conn + (string-append + " CREATE TABLE IF NOT EXISTS blocked_builds_build_server_" - (number->string build-server-id) " + build-server-id " PARTITION OF blocked_builds FOR VALUES IN (" - (number->string build-server-id) - ")"))) + build-server-id + ")")) + + (set! %created-partitions + (cons build-server-id + %created-partitions))) - (define (try-insert) (exec-query conn (string-append @@ -169,9 +176,7 @@ VALUES " ON CONFLICT DO NOTHING") '())) - (unless (null? data) - (create-partitions) - (try-insert))) + #t) (define (handle-populating-blocked-builds-for-scheduled-builds conn build-ids) (define (get-build-details build-id) |