Add scan result policy relation to approval rules
What does this MR do and why?
Addresses #385605 (closed)
Second MR for DB changes: !110947 (merged) MR with Service changes: !110967 (diffs)
This MR adds scan_result_policy_id
to approval rules and adds foreign key and index asynchronously.
Migration Output:
main: == 20230202153926 AddScanResultPolicyIdToApprovalRules: migrating =============
main: -- add_column(:approval_project_rules, :scan_result_policy_id, :bigint)
main: -> 0.0030s
main: -- add_column(:approval_merge_request_rules, :scan_result_policy_id, :bigint)
main: -> 0.0009s
main: == 20230202153926 AddScanResultPolicyIdToApprovalRules: migrated (0.0111s) ====
main: == 20230209103714 AddFkToApprovalRulesOnScanResultPolicyId: migrating =========
main: -- transaction_open?()
main: -> 0.0000s
main: -- transaction_open?()
main: -> 0.0000s
main: -- execute("LOCK TABLE scan_result_policies, approval_project_rules IN SHARE ROW EXCLUSIVE MODE")
main: -> 0.0023s
main: -- execute("ALTER TABLE approval_project_rules\nADD CONSTRAINT fk_e1372c912e\nFOREIGN KEY (scan_result_policy_id)\nREFERENCES scan_result_policies (id)\n\nON DELETE CASCADE\nNOT VALID;\n")
main: -> 0.0077s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0006s
main: -- execute("ALTER TABLE approval_project_rules VALIDATE CONSTRAINT fk_e1372c912e;")
main: -> 0.0036s
main: -- execute("RESET statement_timeout")
main: -> 0.0002s
main: -- transaction_open?()
main: -> 0.0000s
main: -- transaction_open?()
main: -> 0.0000s
main: -- execute("LOCK TABLE scan_result_policies, approval_merge_request_rules IN SHARE ROW EXCLUSIVE MODE")
main: -> 0.0007s
main: -- execute("ALTER TABLE approval_merge_request_rules\nADD CONSTRAINT fk_f726c79756\nFOREIGN KEY (scan_result_policy_id)\nREFERENCES scan_result_policies (id)\n\nON DELETE CASCADE\nNOT VALID;\n")
main: -> 0.0056s
main: -- execute("ALTER TABLE approval_merge_request_rules VALIDATE CONSTRAINT fk_f726c79756;")
main: -> 0.0074s
main: == 20230209103714 AddFkToApprovalRulesOnScanResultPolicyId: migrated (0.6213s)
main: == 20230210113924 PrepareIndexApprovalRulesOnScanResultPolicyId: migrating ====
main: -- index_exists?(:approval_project_rules, :scan_result_policy_id, {:name=>"idx_approval_project_rules_on_scan_result_policy_id", :algorithm=>:concurrently})
main: -> 0.0026s
main: -- add_index_options(:approval_project_rules, :scan_result_policy_id, {:name=>"idx_approval_project_rules_on_scan_result_policy_id", :algorithm=>:concurrently})
main: -> 0.0000s
main: -- index_exists?(:approval_merge_request_rules, :scan_result_policy_id, {:name=>"idx_approval_merge_request_rules_on_scan_result_policy_id", :algorithm=>:concurrently})
main: -> 0.0024s
main: -- add_index_options(:approval_merge_request_rules, :scan_result_policy_id, {:name=>"idx_approval_merge_request_rules_on_scan_result_policy_id", :algorithm=>:concurrently})
main: -> 0.0000s
main: == 20230210113924 PrepareIndexApprovalRulesOnScanResultPolicyId: migrated (0.0174s)
main: == 20230202153926 AddScanResultPolicyIdToApprovalRules: reverting =============
main: -- remove_column(:approval_project_rules, :scan_result_policy_id)
main: -> 0.0019s
main: -- remove_column(:approval_merge_request_rules, :scan_result_policy_id)
main: -> 0.0006s
main: == 20230202153926 AddScanResultPolicyIdToApprovalRules: reverted (0.0060s) ====
main: == 20230209103714 AddFkToApprovalRulesOnScanResultPolicyId: reverting =========
main: == 20230209103714 AddFkToApprovalRulesOnScanResultPolicyId: reverted (0.1375s)
main: == 20230210113924 PrepareIndexApprovalRulesOnScanResultPolicyId: reverting ====
main: == 20230210113924 PrepareIndexApprovalRulesOnScanResultPolicyId: reverted (0.1688s)
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 Sashi Kumar Kumaresan