[go: up one dir, main page]

Extract merge request approvals settings into its own table

From !46637 (comment 441168749)

disable_overriding_approvers_per_merge_request has some technical debt:

  1. This seems to be a project setting rather than an attribute of project. Have considered moving disable_overriding_approvers_per_merge_request to project_settings table?
gitlabhq_development=# \d project_settings;
                               Table "public.project_settings"
             Column              |           Type           | Collation | Nullable | Default
---------------------------------+--------------------------+-----------+----------+---------
 project_id                      | integer                  |           | not null |
...

Or perhaps creating a new table for project approval settings (project_approval_settings perhaps) and store the approval settings there? Rationale behind is that projects is one of our largest tables in GitLab.com, as such there's a performance impact when it comes to reading information from a wide table, we'll always need to read the whole record from disk and not part of it.

  1. The double-negative semantics always feels a little confusing to me (disable_overriding_approvers_per_merge_request = true), I wonder if we could just use overriding_approvers_per_merge_request, so:
  • overriding_approvers_per_merge_request = false disables the override
  • overriding_approvers_per_merge_request = true enables the override

Which I believe it's easier to grasp than:

  • disable_overriding_approvers_per_merge_request = true enables the disable override
  • disable_overriding_approvers_per_merge_request = false disable the disable override

High-level proposal

  1. Create merge_request_approval_settings and store the approval settings there
  2. Rename disable_overriding_approvers_per_merge_request to overriding_approvers_per_merge_request
Edited by 🤖 GitLab Bot 🤖