Group approval rules migration
What does this MR do and why?
Creates tables required to support the management of group-level MR approval rules required by #325646 (closed).
To keep the MR small, the model ApprovalGroupRul is in a followup Add approval group rule model (!132862 - merged).
This is a continuation of the work done in !57800 (closed). High-level design #293957.
Database
Migration/Rollback Log
Migrate
== [advisory_lock_connection] object_id: 226920, pg_backend_pid: 47275
== 20230926092914 AddApprovalGroupRules: migrating ============================
== [advisory_lock_connection] object_id: 227220, pg_backend_pid: 67388
== 20230926093004 AddApprovalGroupsRulesUsers: migrating ======================
-- create_table(:approval_group_rules_users)
-> 0.0145s
== 20230926093004 AddApprovalGroupsRulesUsers: migrated (0.1713s) =============
== 20230926093025 AddApprovalGroupRulesProtectedBranches: migrating ===========
-- create_table(:approval_group_rules_protected_branches)
-> 0.0070s
== 20230926093025 AddApprovalGroupRulesProtectedBranches: migrated (0.0115s) ==
== 20230926093101 AddFkToApprovalRuleOnApprovalGroupRulesUsers: migrating =====
-- transaction_open?(nil)
-> 0.0002s
-- transaction_open?(nil)
-> 0.0000s
-- execute("ALTER TABLE approval_group_rules_users ADD CONSTRAINT fk_9a4b673183 FOREIGN KEY (approval_group_rule_id) REFERENCES approval_group_rules (id) ON DELETE CASCADE NOT VALID;")
-> 0.0017s
-- execute("SET statement_timeout TO 0")
-> 0.0002s
-- execute("ALTER TABLE approval_group_rules_users VALIDATE CONSTRAINT fk_9a4b673183;")
-> 0.0032s
-- execute("RESET statement_timeout")
-> 0.0003s
== 20230926093101 AddFkToApprovalRuleOnApprovalGroupRulesUsers: migrated (0.0457s)
== 20230926093144 AddFkToUserOnApprovalGroupRulesUsers: migrating =============
-- transaction_open?(nil)
-> 0.0000s
-- transaction_open?(nil)
-> 0.0000s
-- execute("ALTER TABLE approval_group_rules_users ADD CONSTRAINT fk_888a0df3b7 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE NOT VALID;")
-> 0.0016s
-- execute("ALTER TABLE approval_group_rules_users VALIDATE CONSTRAINT fk_888a0df3b7;")
-> 0.0071s
== 20230926093144 AddFkToUserOnApprovalGroupRulesUsers: migrated (0.0272s) ====
== 20230926093211 AddFkToApprovalRuleOnApprovalGroupRulesGroups: migrating ====
-- transaction_open?(nil)
-> 0.0000s
-- transaction_open?(nil)
-> 0.0000s
-- execute("ALTER TABLE approval_group_rules_groups ADD CONSTRAINT fk_efff219a48 FOREIGN KEY (approval_group_rule_id) REFERENCES approval_group_rules (id) ON DELETE CASCADE NOT VALID;")
-> 0.0006s
-- execute("ALTER TABLE approval_group_rules_groups VALIDATE CONSTRAINT fk_efff219a48;")
-> 0.0015s
== 20230926093211 AddFkToApprovalRuleOnApprovalGroupRulesGroups: migrated (0.0172s)
== 20230926093251 AddFkToGroupOnApprovalGroupRulesGroups: migrating ===========
-- transaction_open?(nil)
-> 0.0000s
-- transaction_open?(nil)
-> 0.0000s
-- execute("ALTER TABLE approval_group_rules_groups ADD CONSTRAINT fk_50edc8134e FOREIGN KEY (group_id) REFERENCES namespaces (id) ON DELETE CASCADE NOT VALID;")
-> 0.0032s
-- execute("ALTER TABLE approval_group_rules_groups VALIDATE CONSTRAINT fk_50edc8134e;")
-> 0.0070s
== 20230926093251 AddFkToGroupOnApprovalGroupRulesGroups: migrated (0.0266s) ==
== 20230926105440 AddFkToApprovalRuleOnApprovalGroupRulesProtectedBranches: migrating
-- transaction_open?(nil)
-> 0.0000s
-- transaction_open?(nil)
-> 0.0000s
-- execute("ALTER TABLE approval_group_rules_protected_branches ADD CONSTRAINT fk_4f85f13b20 FOREIGN KEY (approval_group_rule_id) REFERENCES approval_group_rules (id) ON DELETE CASCADE NOT VALID;")
-> 0.0007s
-- execute("ALTER TABLE approval_group_rules_protected_branches VALIDATE CONSTRAINT fk_4f85f13b20;")
-> 0.0006s
== 20230926105440 AddFkToApprovalRuleOnApprovalGroupRulesProtectedBranches: migrated (0.0166s)
== 20230926105931 AddFkToProtectedBranchOnApprovalGroupRulesProtectedBranches: migrating
-- transaction_open?(nil)
-> 0.0000s
-- transaction_open?(nil)
-> 0.0000s
-- execute("ALTER TABLE approval_group_rules_protected_branches ADD CONSTRAINT fk_0b85e6c388 FOREIGN KEY (protected_branch_id) REFERENCES protected_branches (id) ON DELETE CASCADE NOT VALID;")
-> 0.0012s
-- execute("ALTER TABLE approval_group_rules_protected_branches VALIDATE CONSTRAINT fk_0b85e6c388;")
-> 0.0017s
== 20230926105931 AddFkToProtectedBranchOnApprovalGroupRulesProtectedBranches: migrated (0.0165s)
== 20230926113518 RemoveApplicationSettingsAiAccessTokenColumn: migrating =====
-- remove_column(:application_settings, :encrypted_ai_access_token)
-> 0.0012s
-- remove_column(:application_settings, :encrypted_ai_access_token_iv)
-> 0.0005s
== 20230926113518 RemoveApplicationSettingsAiAccessTokenColumn: migrated (0.0042s)
== 20230926201357 DropIndexNamespacesOnTypeAndVisibilityAndParentId: migrating
-- transaction_open?(nil)
-> 0.0000s
-- view_exists?(:postgres_partitions)
-> 0.0004s
-- indexes("namespaces")
-> 0.0092s
-- remove_index("namespaces", {:algorithm=>:concurrently, :name=>"index_namespaces_on_type_and_visibility_and_parent_id"})
-> 0.0024s
== 20230926201357 DropIndexNamespacesOnTypeAndVisibilityAndParentId: migrated (0.0265s)
== 20230928145555 AddFkToSecurityOrchestrationPolicyConfigurationOnApprovalGroupRules: migrating
-- transaction_open?(nil)
-> 0.0000s
-- transaction_open?(nil)
-> 0.0000s
-- execute("ALTER TABLE approval_group_rules ADD CONSTRAINT fk_64450bea52 FOREIGN KEY (security_orchestration_policy_configuration_id) REFERENCES security_orchestration_policy_configurations (id) ON DELETE CASCADE NOT VALID;")
-> 0.0018s
-- execute("ALTER TABLE approval_group_rules VALIDATE CONSTRAINT fk_64450bea52;")
-> 0.0025s
== 20230928145555 AddFkToSecurityOrchestrationPolicyConfigurationOnApprovalGroupRules: migrated (0.0318s)
== 20230928145637 AddFkToScanResultPolicyOnApprovalGroupRules: migrating ======
-- transaction_open?(nil)
-> 0.0000s
-- transaction_open?(nil)
-> 0.0001s
-- execute("ALTER TABLE approval_group_rules ADD CONSTRAINT fk_1485c451e3 FOREIGN KEY (scan_result_policy_id) REFERENCES scan_result_policies (id) ON DELETE CASCADE NOT VALID;")
-> 0.0009s
-- execute("ALTER TABLE approval_group_rules VALIDATE CONSTRAINT fk_1485c451e3;")
-> 0.0015s
== 20230928145637 AddFkToScanResultPolicyOnApprovalGroupRules: migrated (0.0235s)
== [advisory_lock_connection] object_id: 227220, pg_backend_pid: 67388
Rollback
== [advisory_lock_connection] object_id: 227000, pg_backend_pid: 66809
== 20230928145637 AddFkToScanResultPolicyOnApprovalGroupRules: reverting ======
-- transaction_open?(nil)
-> 0.0000s
-- remove_foreign_key(:approval_group_rules, {:column=>:scan_result_policy_id})
-> 0.1073s
== 20230928145637 AddFkToScanResultPolicyOnApprovalGroupRules: reverted (0.1223s)
== 20230928145555 AddFkToSecurityOrchestrationPolicyConfigurationOnApprovalGroupRules: reverting
-- transaction_open?(nil)
-> 0.0000s
-- remove_foreign_key(:approval_group_rules, {:column=>:security_orchestration_policy_configuration_id})
-> 0.0036s
== 20230928145555 AddFkToSecurityOrchestrationPolicyConfigurationOnApprovalGroupRules: reverted (0.0087s)
== 20230926201357 DropIndexNamespacesOnTypeAndVisibilityAndParentId: reverting
-- transaction_open?(nil)
-> 0.0000s
-- view_exists?(:postgres_partitions)
-> 0.0005s
-- index_exists?("namespaces", :id, {:name=>"index_namespaces_on_type_and_visibility_and_parent_id", :where=>"(type = 'Group' AND parent_id IS NULL AND visibility_level != 20)", :algorithm=>:concurrently})
-> 0.0144s
-- execute("SET statement_timeout TO 0")
-> 0.0003s
-- add_index("namespaces", :id, {:name=>"index_namespaces_on_type_and_visibility_and_parent_id", :where=>"(type = 'Group' AND parent_id IS NULL AND visibility_level != 20)", :algorithm=>:concurrently})
-> 0.0065s
-- execute("RESET statement_timeout")
-> 0.0005s
== 20230926201357 DropIndexNamespacesOnTypeAndVisibilityAndParentId: reverted (0.0373s)
== 20230926113518 RemoveApplicationSettingsAiAccessTokenColumn: reverting =====
-- add_column(:application_settings, :encrypted_ai_access_token, :binary)
-> 0.0012s
-- add_column(:application_settings, :encrypted_ai_access_token_iv, :binary)
-> 0.0006s
== 20230926113518 RemoveApplicationSettingsAiAccessTokenColumn: reverted (0.0052s)
== 20230926105931 AddFkToProtectedBranchOnApprovalGroupRulesProtectedBranches: reverting
-- transaction_open?(nil)
-> 0.0000s
-- remove_foreign_key(:approval_group_rules_protected_branches, {:column=>:protected_branch_id})
-> 0.0034s
== 20230926105931 AddFkToProtectedBranchOnApprovalGroupRulesProtectedBranches: reverted (0.0088s)
== 20230926105440 AddFkToApprovalRuleOnApprovalGroupRulesProtectedBranches: reverting
-- transaction_open?(nil)
-> 0.0000s
-- remove_foreign_key(:approval_group_rules_protected_branches, {:column=>:approval_group_rule_id})
-> 0.0029s
== 20230926105440 AddFkToApprovalRuleOnApprovalGroupRulesProtectedBranches: reverted (0.0121s)
== 20230926093251 AddFkToGroupOnApprovalGroupRulesGroups: reverting ===========
-- transaction_open?(nil)
-> 0.0000s
-- remove_foreign_key(:approval_group_rules_groups, {:column=>:group_id})
-> 0.0031s
== 20230926093251 AddFkToGroupOnApprovalGroupRulesGroups: reverted (0.0081s) ==
== 20230926093211 AddFkToApprovalRuleOnApprovalGroupRulesGroups: reverting ====
-- transaction_open?(nil)
-> 0.0000s
-- remove_foreign_key(:approval_group_rules_groups, {:column=>:approval_group_rule_id})
-> 0.0028s
== 20230926093211 AddFkToApprovalRuleOnApprovalGroupRulesGroups: reverted (0.0084s)
== 20230926093144 AddFkToUserOnApprovalGroupRulesUsers: reverting =============
-- transaction_open?(nil)
-> 0.0001s
-- remove_foreign_key(:approval_group_rules_users, {:column=>:user_id})
-> 0.0027s
== 20230926093144 AddFkToUserOnApprovalGroupRulesUsers: reverted (0.0079s) ====
== 20230926093101 AddFkToApprovalRuleOnApprovalGroupRulesUsers: reverting =====
-- transaction_open?(nil)
-> 0.0000s
-- remove_foreign_key(:approval_group_rules_users, {:column=>:approval_group_rule_id})
-> 0.0023s
== 20230926093101 AddFkToApprovalRuleOnApprovalGroupRulesUsers: reverted (0.0073s)
== 20230926093025 AddApprovalGroupRulesProtectedBranches: reverting ===========
-- drop_table(:approval_group_rules_protected_branches)
-> 0.0020s
== 20230926093025 AddApprovalGroupRulesProtectedBranches: reverted (0.0056s) ==
== 20230926093004 AddApprovalGroupsRulesUsers: reverting ======================
-- drop_table(:approval_group_rules_users)
-> 0.0008s
== 20230926093004 AddApprovalGroupsRulesUsers: reverted (0.0045s) =============
== [advisory_lock_connection] object_id: 227000, pg_backend_pid: 66809
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.
Edited by Gavin Hinfey