diff options
author | Christopher Baines <mail@cbaines.net> | 2022-05-23 19:10:25 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2022-05-23 19:10:25 +0100 |
commit | 64be52844e679d205d959ea06d50c44366c39097 (patch) | |
tree | ec33c03b2cb41bdd8b5159ecd230bdce07977cec /sqitch/deploy/git_branch_id.sql | |
parent | 89545caa3f8223db49f3e18dfecee0bc4094c0da (diff) | |
download | data-service-64be52844e679d205d959ea06d50c44366c39097.tar data-service-64be52844e679d205d959ea06d50c44366c39097.tar.gz |
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.
Diffstat (limited to 'sqitch/deploy/git_branch_id.sql')
-rw-r--r-- | sqitch/deploy/git_branch_id.sql | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/sqitch/deploy/git_branch_id.sql b/sqitch/deploy/git_branch_id.sql new file mode 100644 index 0000000..9da071c --- /dev/null +++ b/sqitch/deploy/git_branch_id.sql @@ -0,0 +1,32 @@ +-- Deploy guix-data-service:git_branch_id to pg + +BEGIN; + +ALTER TABLE git_branches RENAME TO git_branches_old; + +CREATE TABLE git_branches ( + id integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY, + name character varying NOT NULL, + git_repository_id integer NOT NULL REFERENCES git_repositories (id), + CONSTRAINT git_repository_id_name_unique UNIQUE (git_repository_id, name) +); + +CREATE TABLE git_commits ( + id integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY, + commit character varying NOT NULL, + git_branch_id integer NOT NULL REFERENCES git_branches (id), + datetime timestamp without time zone NOT NULL +); + +INSERT INTO git_branches (name, git_repository_id) + SELECT DISTINCT name, git_repository_id + FROM git_branches_old; + +INSERT INTO git_commits (commit, git_branch_id, datetime) + SELECT commit, git_branches.id, datetime + FROM git_branches_old + INNER JOIN git_branches + ON git_branches_old.name = git_branches.name + AND git_branches_old.git_repository_id = git_branches.git_repository_id; + +COMMIT; |