Skip to content

Add group_id to daily coverage data

Max Orefice requested to merge mo-add-group-id-to-coverage-data into master

Ref: #293825 (closed)

This is Step #1 to refactor our daily coverage data finder.

What does this MR do?

This MR adds a new column to our existing ci_daily_build_group_report_result table.

It includes the following items:

  • New group_id column
  • Adds foreign key associated to it
  • Persist group_id when generating daily coverage

Why are doing this?

In order to aggregate the daily coverage data at the group level, we decided to introduce a new foreign key to our model which will simplify how we fetch data at the group level

This will make it easier to query the data available on this page:

Database Review

Column addition

Migration output

$ bin/rails db:migrate
== 20210204212850 AddGroupIdToCiDailyBuildGroupReportResults: migrating =======
-- add_column(:ci_daily_build_group_report_results, :group_id, :bigint)
   -> 0.0012s
== 20210204212850 AddGroupIdToCiDailyBuildGroupReportResults: migrated (0.0013s)

Migration rollback

== 20210204212850 AddGroupIdToCiDailyBuildGroupReportResults: reverting =======
-- remove_column(:ci_daily_build_group_report_results, :group_id, :bigint)
   -> 0.0008s
== 20210204212850 AddGroupIdToCiDailyBuildGroupReportResults: reverted (0.0027s)

Foreign key creation

Migration output

== 20210208144134 AddIndexGroupIdToCiDailyBuildGroupReportResults: migrating ==
-- transaction_open?()
   -> 0.0000s
-- index_exists?(:ci_daily_build_group_report_results, :group_id, {:name=>"index_ci_daily_build_group_report_results_on_group_id", :algorithm=>:concurrently})
   -> 0.0025s
-- execute("SET statement_timeout TO 0")
   -> 0.0005s
-- add_index(:ci_daily_build_group_report_results, :group_id, {:name=>"index_ci_daily_build_group_report_results_on_group_id", :algorithm=>:concurrently})
   -> 0.0047s
-- execute("RESET ALL")
   -> 0.0005s
-- transaction_open?()
   -> 0.0000s
-- foreign_keys(:ci_daily_build_group_report_results)
   -> 0.0024s
-- execute("ALTER TABLE ci_daily_build_group_report_results\nADD CONSTRAINT fk_fd1858fefd\nFOREIGN KEY (group_id)\nREFERENCES namespaces (id)\nON DELETE CASCADE\nNOT VALID;\n")
   -> 0.0016s
-- execute("ALTER TABLE ci_daily_build_group_report_results VALIDATE CONSTRAINT fk_fd1858fefd;")
   -> 0.0022s
== 20210208144134 AddIndexGroupIdToCiDailyBuildGroupReportResults: migrated (0.0224s)

Migration rollback

== 20210208144134 AddIndexGroupIdToCiDailyBuildGroupReportResults: reverting ==
-- foreign_keys(:ci_daily_build_group_report_results)
   -> 0.0047s
-- remove_foreign_key(:ci_daily_build_group_report_results, {:column=>:group_id})
   -> 0.0047s
-- transaction_open?()
   -> 0.0000s
-- indexes(:ci_daily_build_group_report_results)
   -> 0.0032s
-- execute("SET statement_timeout TO 0")
   -> 0.0002s
-- remove_index(:ci_daily_build_group_report_results, {:algorithm=>:concurrently, :name=>"index_ci_daily_build_group_report_results_on_group_id"})
   -> 0.0046s
-- execute("RESET ALL")
   -> 0.0002s
== 20210208144134 AddIndexGroupIdToCiDailyBuildGroupReportResults: reverted (0.0182s)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • [-] Label as security and @ mention @gitlab-com/gl-security/appsec
  • [-] The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • [-] Security reports checked/validated by a reviewer from the AppSec team
Edited by Max Orefice

Merge request reports