Rework cross derivations support

Stop using the system values as targets, and remove package derivation entries
where this is the case.

Switch the non-cross derivation case to have a target of "", rather than
matching the system, as this makes more sense, and is more consistent now that
the target values no longer match the system values.

Hardcode some more correct target values, and use these instead. Hopefully
this can be better integrated with Guix in the future.

This commit also includes a migration attempting to shrink some indexes.
This commit is contained in:
Christopher Baines 2020-02-08 11:16:08 +00:00
parent 77beb59495
commit f1989e8758
19 changed files with 202 additions and 21 deletions

View file

@ -0,0 +1,15 @@
-- Deploy guix-data-service:change_package_derivations_by_guix_revision_range_target to pg
BEGIN;
UPDATE package_derivations_by_guix_revision_range SET target = '' WHERE system = target;
DELETE FROM package_derivations_by_guix_revision_range WHERE target IN (
'aarch64-linux',
'armhf-linux',
'i686-linux',
'mips64el-linux',
'x86_64-linux'
);
COMMIT;

View file

@ -0,0 +1,7 @@
-- Deploy guix-data-service:change_package_derivations_target to pg
BEGIN;
UPDATE package_derivations SET target = '' WHERE system = target;
COMMIT;

View file

@ -0,0 +1,29 @@
-- Deploy guix-data-service:increase_fillfactor_for_some_indexes to pg
BEGIN;
ALTER INDEX derivation_inputs_pkey SET (fillfactor = 100);
ALTER INDEX derivation_inputs_derivation_output_id_idx SET (fillfactor = 100);
ALTER INDEX guix_revision_package_derivations_pkey SET (fillfactor = 100);
ALTER INDEX derivations_pkey SET (fillfactor = 100);
ALTER INDEX file_name_unique SET (fillfactor = 100);
ALTER INDEX id_unique SET (fillfactor = 100);
ALTER INDEX derivations_hash SET (fillfactor = 100);
ALTER INDEX package_derivations_pkey SET (fillfactor = 100);
ALTER INDEX package_derivations_id_key SET (fillfactor = 100);
ALTER INDEX package_derivations_derivation_id SET (fillfactor = 100);
ALTER INDEX package_derivations_package_id_idx SET (fillfactor = 100);
REINDEX INDEX derivation_inputs_pkey;
REINDEX INDEX derivation_inputs_derivation_output_id_idx;
REINDEX INDEX guix_revision_package_derivations_pkey;
REINDEX INDEX derivations_pkey;
REINDEX INDEX file_name_unique;
REINDEX INDEX id_unique;
REINDEX INDEX derivations_hash;
REINDEX INDEX package_derivations_pkey;
REINDEX INDEX package_derivations_id_key;
REINDEX INDEX package_derivations_derivation_id;
REINDEX INDEX package_derivations_package_id_idx;
COMMIT;

View file

@ -0,0 +1,30 @@
-- Deploy guix-data-service:remove_old_cross_derivations to pg
BEGIN;
DELETE FROM guix_revision_package_derivations WHERE package_derivation_id IN (
SELECT id
FROM package_derivations
WHERE target IN (
'aarch64-linux',
'armhf-linux',
'i686-linux',
'mips64el-linux',
'x86_64-linux'
)
);
-- Checking this constraint is expensive, so drop it, then re-create it
ALTER TABLE guix_revision_package_derivations DROP CONSTRAINT guix_revision_package_derivations_package_derivation_id_fkey;
DELETE FROM package_derivations WHERE target IN (
'aarch64-linux',
'armhf-linux',
'i686-linux',
'mips64el-linux',
'x86_64-linux'
);
ALTER TABLE guix_revision_package_derivations ADD CONSTRAINT "guix_revision_package_derivations_package_derivation_id_fkey" FOREIGN KEY (package_derivation_id) REFERENCES package_derivations(id);
COMMIT;