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: small in db/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

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:migrate

Check 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: 66531
bin/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: 69960

MR 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

Merge request reports

Loading
Loading