From f68166514f5aeea3c8af0e47c056bb7a090ee46f Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sun, 4 Oct 2020 15:11:21 +0100 Subject: [PATCH] Actually delete more of the data for a revision Previously the package_derivations table wasn't considered, which would mean derivations would still be referenced. This commit fixes that, along with also deleting unreferenced entries in some linter related tables. --- guix-data-service/data-deletion.scm | 42 ++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/guix-data-service/data-deletion.scm b/guix-data-service/data-deletion.scm index 775db6b..7387802 100644 --- a/guix-data-service/data-deletion.scm +++ b/guix-data-service/data-deletion.scm @@ -33,6 +33,42 @@ delete-unreferenced-derivations)) (define (delete-guix-revisions conn git-repository-id commits) + (define (delete-unreferenced-package-derivations) + (exec-query + conn + " +DELETE FROM package_derivations +WHERE NOT EXISTS ( + SELECT 1 + FROM guix_revision_package_derivations + WHERE guix_revision_package_derivations.package_derivation_id = + package_derivations.id +)")) + + (define (delete-unreferenced-lint-warnings) + (exec-query + conn + " +DELETE FROM lint_warnings +WHERE NOT EXISTS ( + SELECT 1 + FROM guix_revision_lint_warnings + WHERE guix_revision_lint_warnings.lint_warning_id = + lint_warnings.id +)")) + + (define (delete-unreferenced-lint-checkers) + (exec-query + conn + " +DELETE FROM lint_checkers +WHERE NOT EXISTS ( + SELECT 1 + FROM guix_revision_lint_checkers + WHERE guix_revision_lint_checkers.lint_checker_id = + lint_checkers.id +)")) + (let ((guix-revision-ids (map car @@ -96,7 +132,11 @@ AND id NOT IN ( INNER JOIN git_branches ON git_branches.commit = guix_revisions.commit AND git_branches.git_repository_id = guix_revisions.git_repository_id -)"))))) +)")) + + (delete-unreferenced-package-derivations) + (delete-unreferenced-lint-warnings) + (delete-unreferenced-lint-checkers)))) (define (delete-revisions-from-branch conn git-repository-id branch-name commits) (define (delete-jobs conn)