forked from lix-project/hydra
9516b256f1
Duplicating this data on every record of the builds table cost approximately 4G of duplication. Note that the database migration included took about 4h45m on an untuned server which uses very slow rotational disks in a RAID5 setup, with not a lot of RAM. I imagine in production it might take an hour or two, but not 4. If this should become a chunked migration, I can do that. Note: Because of the question about chunked migrations, I have NOT YET tested this migration thoroughly enough for merge.
31 lines
962 B
SQL
31 lines
962 B
SQL
ALTER TABLE JobsetEvals
|
|
ADD COLUMN nixExprInput text,
|
|
ADD COLUMN nixExprPath text;
|
|
|
|
|
|
-- This migration took 4.5 hours on a server
|
|
-- with 5400RPM drives, against a copy of hydra's
|
|
-- production dataset. It might take a significantly
|
|
-- less amount of time there, and not justify a
|
|
-- batched migration.
|
|
UPDATE jobsetevals
|
|
SET (nixexprinput, nixexprpath) = (
|
|
SELECT builds.nixexprinput, builds.nixexprpath
|
|
FROM builds
|
|
LEFT JOIN jobsetevalmembers
|
|
ON jobsetevalmembers.build = builds.id
|
|
WHERE jobsetevalmembers.eval = jobsetevals.id
|
|
LIMIT 1
|
|
)
|
|
WHERE jobsetevals.id in (
|
|
SELECT jobsetevalsprime.id
|
|
FROM jobsetevals as jobsetevalsprime
|
|
WHERE jobsetevalsprime.nixexprinput IS NULL
|
|
-- AND jobsetevalsprime.id > ? --------- These are in case of a batched migration
|
|
ORDER BY jobsetevalsprime.id ASC -- /
|
|
-- LIMIT ? -- ----------------------
|
|
);
|
|
|
|
ALTER TABLE builds
|
|
DROP COLUMN nixexprinput,
|
|
DROP COLUMN nixexprpath; |