Skip to content

Add epics.issue_id NOT NULL constraint

What does this MR do and why?

Related to #450976 (closed)

Add a NOT NULL constraint to the epics table for the issue_id column. We already introduced the application changes to create a work item for every new epic (!143844 (merged)), backfilled the missing data (!143844 (merged)) and finalized the BG (!152625 (merged)), as well as adding the model presence validation (!153157 (merged)).

The constraint is added as a post-migration to ensure it runs after FinalizeBackfillEpicBasicFieldsToWorkItemRecord.

Database

20240510134106_add_epics_issue_id_not_null_constraint.rb

 bin/rails db:migrate:up:main VERSION=20240510134106

main: == [advisory_lock_connection] object_id: 124760, pg_backend_pid: 80055
main: == 20240510134106 AddEpicsIssueIdNotNullConstraint: migrating =================
main: -- current_schema(nil)
main:    -> 0.0011s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- execute("ALTER TABLE epics\nADD CONSTRAINT check_450724d1bb\nCHECK ( issue_id IS NOT NULL )\nNOT VALID;\n")
main:    -> 0.0020s
main: == 20240510134106 AddEpicsIssueIdNotNullConstraint: migrated (0.0433s) ========

main: == [advisory_lock_connection] object_id: 124760, pg_backend_pid: 80055
 bin/rails db:migrate:down:main VERSION=20240510134106

main: == [advisory_lock_connection] object_id: 124720, pg_backend_pid: 79524
main: == 20240510134106 AddEpicsIssueIdNotNullConstraint: reverting =================
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- execute("            ALTER TABLE epics\n            DROP CONSTRAINT IF EXISTS check_450724d1bb\n")
main:    -> 0.0024s
main: == 20240510134106 AddEpicsIssueIdNotNullConstraint: reverted (0.0160s) ========

main: == [advisory_lock_connection] object_id: 124720, pg_backend_pid: 79524

MR acceptance checklist

Please evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Eugenia Grieff

Merge request reports