Skip to content

Add scan result policy relation to approval rules

Sashi Kumar Kumaresan requested to merge sk/385605-db-changes-1 into master

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.

Edited by Sashi Kumar Kumaresan

Merge request reports