Skip to content

Delete merge_request_metrics -> ci_pipelines FK

Adam Hegyi requested to merge drop_mr_metrics_fk_on_pipelines into master

What does this MR do and why?

This MR removes the foreign key between the merge_request_metrics and ci_pipelines tables. This is needed for CI DB decomposition.

Within this MR, I add a new shared example that can test the loose FK cleanup behaviour.

Related epic: #348272 (closed)

Migration

Up:

== 20211213102111 DropCiPipelinesMrMetricsFk: migrating =======================
-- transaction_open?()
   -> 0.0000s
-- foreign_keys(:merge_request_metrics)
   -> 0.0045s
-- remove_foreign_key(:merge_request_metrics, :ci_pipelines, {:name=>"fk_rails_33ae169d48"})
   -> 0.0068s
== 20211213102111 DropCiPipelinesMrMetricsFk: migrated (0.0227s) ==============

Down:

== 20211213102111 DropCiPipelinesMrMetricsFk: reverting =======================
-- transaction_open?()
   -> 0.0000s
-- foreign_keys(:merge_request_metrics)
   -> 0.0026s
-- transaction_open?()
   -> 0.0000s
-- execute("ALTER TABLE merge_request_metrics\nADD CONSTRAINT fk_rails_33ae169d48\nFOREIGN KEY (pipeline_id)\nREFERENCES ci_pipelines (id)\nON DELETE CASCADE\nNOT VALID;\n")
   -> 0.0026s
-- execute("SET statement_timeout TO 0")
   -> 0.0007s
-- execute("ALTER TABLE merge_request_metrics VALIDATE CONSTRAINT fk_rails_33ae169d48;")
   -> 0.0057s
-- execute("RESET statement_timeout")
   -> 0.0006s
== 20211213102111 DropCiPipelinesMrMetricsFk: reverted (0.0254s) ==============

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Adam Hegyi

Merge request reports

Loading