Extract merge request approvals settings into its own table
From !46637 (comment 441168749)
disable_overriding_approvers_per_merge_request
has some technical debt:
- This seems to be a project setting rather than an attribute of
project
. Have considered movingdisable_overriding_approvers_per_merge_request
toproject_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.
- The double-negative semantics always feels a little confusing to me (
disable_overriding_approvers_per_merge_request = true
), I wonder if we could just useoverriding_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
- Create
merge_request_approval_settings
and store the approval settings there - Rename
disable_overriding_approvers_per_merge_request
tooverriding_approvers_per_merge_request