Enqueue migration to nullify builds.auto_canceled_by_id rows that reference non-existing pipelines
Similar to #485607 (closed), the corrupted foreign key between p_ci_pipelines
and p_ci_pipeline_variables
left job records in the database that point to non-existing pipelines and they need to be cleaned-up before validating the new foreign key between these tables. The FK was defined with ON DELETE SET NULL
, so we must enqueue a data migration to fix the broken records.
"fk_a2141b1522_p" FOREIGN KEY (auto_canceled_by_partition_id, auto_canceled_by_id) REFERENCES p_ci_pipelines(partition_id, id) ON UPDATE CASCADE ON DELETE SET NULL
gitlabhq_dblab=# select count(*) from p_ci_builds where auto_canceled_by_id is not null and not exists(select 1 from ci_pipelines where p_ci_builds.auto_canceled_by_id = ci_pipelines.id);
count
-------
11975
(1 row)
Edited by Marius Bobin