Add approval rules with approvers to usage ping

What does this MR do?

Related issue: #220529 (closed)

Adds usage ping for:

  1. Number of required approvals = Number of eligible approvers
  2. Number of required approvals < Number of eligible approvers
  3. Number of required approvals > Number of eligible approvers (these are “invalid” approval rules that cannot be satisfied, but it could be worth seeing what comes up)

Number of required approvals = Number of eligible approvers

SELECT COUNT(approval_project_rules.id) FROM approval_project_rules WHERE approval_project_rules.id IN (SELECT approval_project_rules.id FROM approval_project_rules INNER JOIN approval_project_rules_users ON approval_project_rules_users.approval_project_rule_id = approval_project_rules.id WHERE approval_project_rules.rule_type = 0 GROUP BY approval_project_rules.id HAVING (COUNT(approval_project_rules_users) = approvals_required))

https://explain.depesz.com/s/VfUd

Number of required approvals < Number of eligible approvers

SELECT COUNT(approval_project_rules.id) FROM approval_project_rules WHERE approval_project_rules.id IN (SELECT approval_project_rules.id FROM approval_project_rules INNER JOIN approval_project_rules_users ON approval_project_rules_users.approval_project_rule_id = approval_project_rules.id WHERE approval_project_rules.rule_type = 0 GROUP BY approval_project_rules.id HAVING (COUNT(approval_project_rules_users) < approvals_required))

https://explain.depesz.com/s/r8Ng

Number of required approvals > Number of eligible approvers

SELECT COUNT(approval_project_rules.id) FROM approval_project_rules WHERE approval_project_rules.id IN (SELECT approval_project_rules.id FROM approval_project_rules INNER JOIN approval_project_rules_users ON approval_project_rules_users.approval_project_rule_id = approval_project_rules.id WHERE approval_project_rules.rule_type = 0 GROUP BY approval_project_rules.id HAVING (COUNT(approval_project_rules_users) > approvals_required))

https://explain.depesz.com/s/AiOz

Boundaries

SELECT MAX(approval_project_rules.id) FROM approval_project_rules WHERE approval_project_rules.rule_type = 0

https://explain.depesz.com/s/7nlO

SELECT MIN(approval_project_rules.id) FROM approval_project_rules WHERE approval_project_rules.rule_type = 0

https://explain.depesz.com/s/rziK

Edited by Igor Drozdov

Merge request reports

Loading