Draft: Include invited groups as CODEOWNER
What does this MR do and why?
Related to: #498117 (comment 2173860345)+
Currently, as per the CODEOWNERS documentation for the CODEOWNERS
file to reference a group it is not under you must first add that group to the project.
This MR aims to make sure that groups invited to other groups are inherited by their subprojects as CODEOWNERS
.
Database execution plans
shared_with_group_links_of_ancestors
Index Scan using index_group_group_links_on_shared_group_and_shared_with_group on public.group_group_links (cost=0.42..4.68 rows=2 width=54) (actual time=2.153..2.154 rows=0 loops=1)
Index Cond: (group_group_links.shared_group_id = 101)
Buffers: shared hit=3 read=3
I/O Timings: read=2.120 write=0.000
Settings: effective_cache_size = '472585MB', jit = 'off', random_page_cost = '1.5', seq_page_cost = '4', work_mem = '100MB'
shared_with_group_links_of_ancestors_self
Index Scan using index_group_group_links_on_shared_group_and_shared_with_group on public.group_group_links (cost=0.42..9.10 rows=4 width=54) (actual time=0.020..0.020 rows=0 loops=1)
Index Cond: (group_group_links.shared_group_id = ANY ('{101,103}'::bigint[]))
Buffers: shared hit=9
I/O Timings: read=0.000 write=0.000
Settings: effective_cache_size = '472585MB', jit = 'off', random_page_cost = '1.5', seq_page_cost = '4', work_mem = '100MB'
shared_with_groups_of_ancestors
Nested Loop (cost=0.98..10.62 rows=1 width=376) (actual time=0.033..0.034 rows=0 loops=1)
Buffers: shared hit=6
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using index_group_group_links_on_shared_group_and_shared_with_group on public.group_group_links (cost=0.42..3.45 rows=2 width=8) (actual time=0.032..0.033 rows=0 loops=1)
Index Cond: (group_group_links.shared_group_id = 101)
Heap Fetches: 0
Buffers: shared hit=6
I/O Timings: read=0.000 write=0.000
-> Index Scan using namespaces_pkey on public.namespaces (cost=0.56..3.58 rows=1 width=376) (actual time=0.000..0.000 rows=0 loops=0)
Index Cond: (namespaces.id = group_group_links.shared_with_group_id)
Filter: ((namespaces.type)::text = 'Group'::text)
Rows Removed by Filter: 0
I/O Timings: read=0.000 write=0.000
Settings: effective_cache_size = '472585MB', jit = 'off', random_page_cost = '1.5', seq_page_cost = '4', work_mem = '100MB'
shared_with_groups_of_ancestors_and_self
Nested Loop (cost=0.98..19.75 rows=1 width=376) (actual time=0.031..0.031 rows=0 loops=1)
Buffers: shared hit=9
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using index_group_group_links_on_shared_group_and_shared_with_group on public.group_group_links (cost=0.42..5.40 rows=4 width=8) (actual time=0.030..0.030 rows=0 loops=1)
Index Cond: (group_group_links.shared_group_id = ANY ('{101,103}'::bigint[]))
Heap Fetches: 0
Buffers: shared hit=9
I/O Timings: read=0.000 write=0.000
-> Index Scan using namespaces_pkey on public.namespaces (cost=0.56..3.58 rows=1 width=376) (actual time=0.000..0.000 rows=0 loops=0)
Index Cond: (namespaces.id = group_group_links.shared_with_group_id)
Filter: ((namespaces.type)::text = 'Group'::text)
Rows Removed by Filter: 0
I/O Timings: read=0.000 write=0.000
Settings: random_page_cost = '1.5', seq_page_cost = '4', work_mem = '100MB', effective_cache_size = '472585MB', jit = 'off'
MR acceptance checklist
Please evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Edited by Joe Woodward