Add approval rules with approvers to usage ping
What does this MR do?
Related issue: #220529 (closed)
Adds usage ping for:
- Number of required approvals = Number of eligible approvers
- Number of required approvals < Number of eligible approvers
- 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
Edited by Igor Drozdov