Skip to content

Allow Projects with Freeze Periods to be Deleted

Andrew Fontaine requested to merge afontaine/cascade-delete-freeze-periods into master

What does this MR do?

The original creation of the foreign key from freeze periods to projects did not set any on delete behaviour.

The migration here deletes and recreates that foreign key with a cascading on delete, allowing the project delete to also delete any linked freeze periods.

Changelog: fixed

migration
== 20210617161348 CascadeDeleteFreezePeriods: migrating =======================
-- transaction_open?()
   -> 0.0000s
-- foreign_keys(:ci_freeze_periods)
   -> 0.0057s
-- execute("ALTER TABLE ci_freeze_periods\nADD CONSTRAINT fk_2e02bbd1a6\nFOREIGN KEY (project_id)\nREFERENCES projects (id)\nON DELETE CASCADE\nNOT VALID;\n")
   -> 0.0028s
-- execute("SET statement_timeout TO 0")
   -> 0.0005s
-- execute("ALTER TABLE ci_freeze_periods VALIDATE CONSTRAINT fk_2e02bbd1a6;")
   -> 0.0075s
-- execute("RESET ALL")
   -> 0.0006s
-- foreign_keys(:ci_freeze_periods)
   -> 0.0021s
-- remove_foreign_key(:ci_freeze_periods, :projects, {:column=>:project_id, :name=>"fk_rails_2e02bbd1a6"})
   -> 0.0035s
== 20210617161348 CascadeDeleteFreezePeriods: migrated (0.0331s) ==============
rollback
== 20210617161348 CascadeDeleteFreezePeriods: reverting =======================
-- transaction_open?()
   -> 0.0000s
-- foreign_keys(:ci_freeze_periods)
   -> 0.0034s
-- execute("ALTER TABLE ci_freeze_periods\nADD CONSTRAINT fk_rails_2e02bbd1a6\nFOREIGN KEY (project_id)\nREFERENCES projects (id)\n\nNOT VALID;\n")
   -> 0.0036s
-- execute("SET statement_timeout TO 0")
   -> 0.0005s
-- execute("ALTER TABLE ci_freeze_periods VALIDATE CONSTRAINT fk_rails_2e02bbd1a6;")
   -> 0.0066s
-- execute("RESET ALL")
   -> 0.0007s
-- foreign_keys(:ci_freeze_periods)
   -> 0.0020s
-- remove_foreign_key(:ci_freeze_periods, :projects, {:column=>:project_id, :name=>"fk_2e02bbd1a6"})
   -> 0.0035s
== 20210617161348 CascadeDeleteFreezePeriods: reverted (0.0286s) ==============

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

For #329162 (closed)

Edited by Andrew Fontaine

Merge request reports