aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--guix-data-service/model/blocked-builds.scm29
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)