Add migration to backfill user_group_member_roles for direct membership
What does this MR do and why?
- Resolves part-1 of #520189 (closed)
- Creates a background migration to populate the
user_group_member_rolestable from thememberstable for group members that have a member role assigned to them. - As part of that, it creates a temporary index on the
memberstable. - This MR is part of a bigger epic to cache member roles, #513033
Database
- Migration:
main: == 20250804025048 AddTmpIndexToMembersForGroupMembersWithMemberRole: migrating
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main: -> 0.0107s
main: -- index_exists?(:members, [:id, :source_id], {:name=>:tmp_idx_members_on_id_for_group_members_with_member_role, :where=>"member_role_id IS NOT NULL AND source_type = 'Namespace'", :algorithm=>:concurrently})
main: -> 0.0061s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0003s
main: -- add_index(:members, [:id, :source_id], {:name=>:tmp_idx_members_on_id_for_group_members_with_member_role, :where=>"member_role_id IS NOT NULL AND source_type = 'Namespace'", :algorithm=>:concurrently})
main: -> 0.0065s
main: -- execute("RESET statement_timeout")
main: -> 0.0005s
main: == 20250804025048 AddTmpIndexToMembersForGroupMembersWithMemberRole: migrated (0.0386s)
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Related to #520189 (closed)
Edited by Hinam Mehra