Partition the package_derivations_by_guix_revision_range table

And create a proper git_branches table in the process.

I'm hoping this will help with slow deletions from the
package_derivations_by_guix_revision_range table in the case where there are
lots of branches, since it'll separate the data for one branch from another.

These migrations will remove the existing data, so
rebuild-package-derivations-table will currently need manually running to
regenerate it.
This commit is contained in:
Christopher Baines 2022-05-23 19:10:25 +01:00
parent 89545caa3f
commit 64be52844e
19 changed files with 442 additions and 167 deletions

View file

@ -17,32 +17,10 @@
conn
(lambda (conn)
(let* ((url "test-url")
(id (git-repository-url->git-repository-id conn url)))
(insert-git-branch-entry conn
"master"
"test-commit"
id
(current-date)))
#t)
#:always-rollback? #t))
(test-assert "insert-git-branch-entry works twice"
(with-postgresql-transaction
conn
(lambda (conn)
(let* ((url "test-url")
(id (git-repository-url->git-repository-id conn url)))
(insert-git-branch-entry conn
"master"
"test-commit"
id
(current-date))
(insert-git-branch-entry conn
"master"
"test-commit"
id
(current-date)))
#t)
(git-repository-id
(git-repository-url->git-repository-id conn url)))
(insert-git-branch-entry conn git-repository-id "master")
#t))
#:always-rollback? #t))))
(test-end)

View file

@ -0,0 +1,52 @@
(define-module (test-model-git-commit)
#:use-module (srfi srfi-19)
#:use-module (srfi srfi-64)
#:use-module (guix-data-service database)
#:use-module (guix-data-service model git-repository)
#:use-module (guix-data-service model git-branch)
#:use-module (guix-data-service model git-commit))
(test-begin "test-model-git-commit")
(with-postgresql-connection
"test-module-git-commit"
(lambda (conn)
(check-test-database! conn)
(test-assert "insert-git-commit-entry works"
(with-postgresql-transaction
conn
(lambda (conn)
(let* ((url "test-url")
(git-repository-id
(git-repository-url->git-repository-id conn url))
(git-branch-id
(insert-git-branch-entry conn git-repository-id "master")))
(insert-git-commit-entry conn
git-branch-id
"test-commit"
(current-date)))
#t)
#:always-rollback? #t))
(test-assert "insert-git-commit-entry works twice"
(with-postgresql-transaction
conn
(lambda (conn)
(let* ((url "test-url")
(git-repository-id
(git-repository-url->git-repository-id conn url))
(git-branch-id
(insert-git-branch-entry conn git-repository-id "master")))
(insert-git-commit-entry conn
git-branch-id
"test-commit"
(current-date))
(insert-git-commit-entry conn
git-branch-id
"test-commit"
(current-date)))
#t)
#:always-rollback? #t))))
(test-end)