Skip to content

Deprecate test reports relationship with requirements

Felipe Cardozo requested to merge issue_345842 into master

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

Issue.for_requirement_iids

Requirement.with_last_test_report_state

Requirement.without_test_report

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.

Edited by Felipe Cardozo

Merge request reports