Deprecate test reports relationship with requirements
What does this MR do and why?
We are in the process of deprecating Requirement
objects and replace it with
work items(issues of requirement type). This removes RequirementsManagement::TestReport
belongs_to
relationship with Requirement
and replaces it with Issue
so we can
be able ignore requirements_management_test_reports.requirement_id
column in a follow-up.
#345842 (closed) populated all test reports issue_id
column
so it is also safe to add model validations.
Requirement
object will still be used as a proxy object so we can keep iids
compatible. For more information check the following discussion.
SQL queries
This section shows the new SQL generated by the usage of each scope, relationship or UsageData
query that changed.
Requirement.recent_test_reports
- Query: $2256821(for requirement with 592 test reports)
- https://explain.depesz.com/s/TIsR
Issue.for_requirement_iids
- Query $2256824(for GitLab project)
- https://explain.depesz.com/s/fHnT
Requirement.with_last_test_report_state
- Query $2256827(for GitLab project)
- https://explain.depesz.com/s/Nxwg
Requirement.without_test_report
- Query $2256829(for GitLab project)
- https://explain.depesz.com/s/3rUV
UsageData distinct_count(RequirementsManagement::TestReport, :issue_id)
This one generates three queries:
- Query 1
SELECT Min("requirements_management_test_reports"."issue_id")
FROM "requirements_management_test_reports"
https://explain.depesz.com/s/865x
- Query 2
SELECT Max("requirements_management_test_reports"."issue_id")
FROM "requirements_management_test_reports"
https://explain.depesz.com/s/CUyQ
- Query 3
SELECT Count(DISTINCT "requirements_management_test_reports"."issue_id")
FROM "requirements_management_test_reports"
WHERE "requirements_management_test_reports"."issue_id" >= 96066025
AND "requirements_management_test_reports"."issue_id" < 102621508
https://explain.depesz.com/s/mkeS3
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.