Add compliance_frameworks_with_pipeline to usage ping
- What does this MR do?
- Review
- Screenshots (strongly suggested)
- Does this MR meet the acceptance criteria?
What does this MR do?
- Adds a new usage ping entry to count the number of custom compliance frameworks that have an associated GitLab CI configuration file.
- All SQL queries are tested in #database-lab and execute in <20ms from cold cache.
Review
Min Query
SELECT MIN("compliance_management_frameworks"."id") FROM "compliance_management_frameworks" WHERE "compliance_management_frameworks"."pipeline_configuration_full_path" IS NOT NULL
Query Plan
Result (cost=2.87..2.88 rows=1 width=8) (actual time=0.355..0.356 rows=1 loops=1)
Buffers: shared hit=61
I/O Timings: read=0.000 write=0.000
InitPlan 1 (returns $0)
-> Limit (cost=0.28..2.87 rows=1 width=8) (actual time=0.350..0.350 rows=1 loops=1)
Buffers: shared hit=61
I/O Timings: read=0.000 write=0.000
-> Index Scan using compliance_management_frameworks_pkey on public.compliance_management_frameworks (cost=0.28..109.37 rows=42 width=8) (actual time=0.348..0.348 rows=1 loops=1)
Index Cond: (compliance_management_frameworks.id IS NOT NULL)
Filter: (compliance_management_frameworks.pipeline_configuration_full_path IS NOT NULL)
Rows Removed by Filter: 1423
Buffers: shared hit=61
I/O Timings: read=0.000 write=0.000
Timings
Time: 1.302 ms
- planning: 0.894 ms
- execution: 0.408 ms
- I/O read: 0.000 ms
- I/O write: 0.000 ms
Shared buffers:
- hits: 61 (~488.00 KiB) from the buffer pool
- reads: 0 from the OS file cache, including disk I/O
- dirtied: 0
- writes: 0
Max Query
SELECT MAX("compliance_management_frameworks"."id") FROM "compliance_management_frameworks" WHERE "compliance_management_frameworks"."pipeline_configuration_full_path" IS NOT NULL
Query Plan
Result (cost=2.87..2.88 rows=1 width=8) (actual time=0.177..0.178 rows=1 loops=1)
Buffers: shared read=3
I/O Timings: read=0.143 write=0.000
InitPlan 1 (returns $0)
-> Limit (cost=0.28..2.87 rows=1 width=8) (actual time=0.173..0.174 rows=1 loops=1)
Buffers: shared read=3
I/O Timings: read=0.143 write=0.000
-> Index Scan using compliance_management_frameworks_pkey on public.compliance_management_frameworks (cost=0.28..109.37 rows=42 width=8) (actual time=0.171..0.172 rows=1 loops=1)
Index Cond: (compliance_management_frameworks.id IS NOT NULL)
Filter: (compliance_management_frameworks.pipeline_configuration_full_path IS NOT NULL)
Rows Removed by Filter: 0
Buffers: shared read=3
I/O Timings: read=0.143 write=0.000
Timings
Time: 0.993 ms
- planning: 0.777 ms
- execution: 0.216 ms
- I/O read: 0.143 ms
- I/O write: 0.000 ms
Shared buffers:
- hits: 0 from the buffer pool
- reads: 3 (~24.00 KiB) from the OS file cache, including disk I/O
- dirtied: 0
- writes: 0
Count Query
SELECT COUNT("compliance_management_frameworks"."id") FROM "compliance_management_frameworks" WHERE "compliance_management_frameworks"."pipeline_configuration_full_path" IS NOT NULL
Query Plan
Aggregate (cost=27.77..27.78 rows=1 width=8) (actual time=0.137..0.138 rows=1 loops=1)
Buffers: shared hit=17 read=2
I/O Timings: read=0.057 write=0.000
-> Index Scan using idx_max_test_2 on public.compliance_management_frameworks (cost=0.28..27.66 rows=42 width=8) (actual time=0.088..0.126 rows=48 loops=1)
Index Cond: (compliance_management_frameworks.pipeline_configuration_full_path IS NOT NULL)
Buffers: shared hit=17 read=2
I/O Timings: read=0.057 write=0.000
Timings
Time: 0.989 ms
- planning: 0.114 ms
- execution: 0.875 ms
- I/O read: 0.497 ms
- I/O write: 0.000 ms
Shared buffers:
- hits: 1 (~8.00 KiB) from the buffer pool
- reads: 18 (~144.00 KiB) from the OS file cache, including disk I/O
- dirtied: 0
- writes: 0
Screenshots (strongly suggested)
Does this MR meet the acceptance criteria?
Conformity
-
I have included changelog trailers, or none are needed. (Does this MR need a changelog?) -
I have added/updated documentation, or it's not needed. (Is documentation required?) -
I have properly separated EE content from FOSS, or this MR is FOSS only. (Where should EE code go?) -
I have added information for database reviewers in the MR description, or it's not needed. (Does this MR have database related changes?) -
I have self-reviewed this MR per code review guidelines. -
This MR does not harm performance, or I have asked a reviewer to help assess the performance impact. (Merge request performance guidelines) -
I have followed the style guides. -
This change is backwards compatible across updates, or this does not apply.
Availability and Testing
-
I have added/updated tests following the Testing Guide, or it's not needed. (Consider all test levels. See the Test Planning Process.) -
I have tested this MR in all supported browsers, or it's not needed. -
I have informed the Infrastructure department of a default or new setting change per definition of done, or it's not needed.
Security
Does this MR contain changes to processing or storing of credentials or tokens, authorization and authentication methods or other items described in the security review guidelines? If not, then delete this Security section.
-
Label as security and @ mention @gitlab-com/gl-security/appsec
-
The MR includes necessary changes to maintain consistency between UI, API, email, or other methods -
Security reports checked/validated by a reviewer from the AppSec team
Related to #329897 (closed)
Edited by Max Woolf