Loading
Add not_applicable_count to project_requirement_compliance_statuses
What does this MR do and why?
Adds a not_applicable_count column to project_requirement_compliance_statuses. Compliance requirement statuses need to count not-applicable control results alongside pass_count, fail_count, and pending_count.
- Regular migration, not post-deploy. The new column is
integer,default: 0,null: false, the same as the sibling count columns. - The table is
table_size: smallindb/docs. Adding a column with a constant default only changes metadata in PostgreSQL 11+, so it doesn't rewrite the table. - No backfill needed: existing rows default to
0, which is correct.
This MR only changes the schema. Model, service, GraphQL, worker, and frontend changes are tracked in separate tasks under the parent issue.
References
- Task: https://gitlab.com/gitlab-org/gitlab/-/work_items/622254
- Parent: https://gitlab.com/gitlab-org/gitlab/-/work_items/621132
Screenshots or screen recordings
Not applicable. This MR has no UI changes.
How to set up and validate locally
bin/rails db:migrate
bin/rails db:rollback
bin/rails db:migrateCheck that db/structure.sql doesn't change after running the migration.
Migration output
From a local GDK, main database only.
bin/rails db:migrate:up:main VERSION=20260929084724
main: == [advisory_lock_connection] object_id: 165060, pg_backend_pid: 66531
main: == 20260929084724 AddNotApplicableCountToProjectRequirementComplianceStatuses: migrating
main: -- add_column(:project_requirement_compliance_statuses, :not_applicable_count, :integer, {:default=>0, :null=>false})
main: -> 0.0391s
main: == 20260929084724 AddNotApplicableCountToProjectRequirementComplianceStatuses: migrated (0.0472s)
main: == [advisory_lock_connection] object_id: 165060, pg_backend_pid: 66531bin/rails db:migrate:down:main VERSION=20260929084724
main: == [advisory_lock_connection] object_id: 165060, pg_backend_pid: 69960
main: == 20260929084724 AddNotApplicableCountToProjectRequirementComplianceStatuses: reverting
main: -- remove_column(:project_requirement_compliance_statuses, :not_applicable_count, :integer, {:default=>0, :null=>false})
main: -> 0.0338s
main: == 20260929084724 AddNotApplicableCountToProjectRequirementComplianceStatuses: reverted (0.0441s)
main: == [advisory_lock_connection] object_id: 165060, pg_backend_pid: 69960MR acceptance checklist
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 SAM FIGUEROA