Skip to content

Support CS components in PossiblyAffectedOccurrencesFinder

What does this MR do and why?

This MR adds the ability to filter Sbom::Occurrence records based on the purl_type and source_package_name to the Sbom::PossiblyAffectedOccurrencesFinder#execute_in_batches method.

This allows us to use the new sbom_source_packages.name column added by Add sbom_source_packages table (!140539 - merged) • Adam Cohen • 16.8 so that we can support finding possibly affected Container Scanning components.

Query plans

Both of the following query plans were generated as follows:

  1. Connect to the production read-only DB using teleport

  2. Open up a rails console and enable sql log output from activerecord queries:

    ActiveRecord::Base.logger = Logger.new(STDOUT)`
  3. Find the package with the highest number of sbom_occurrences by opening up a psql session against the production read-only DB:

    SELECT ssp.id, ssp.name, count(*)
    FROM sbom_source_packages ssp, sbom_occurrences so
    WHERE so.source_package_id = ssp.id
    GROUP BY ssp.id, ssp.name
    ORDER BY count(*) DESC
    LIMIT 1;
    
      id  |    name    | purl_type | count
    ------+------------+-----------+-------
        6 | util-linux |        11 |  7838
  4. Use execute_in_batches against the util-linux package which has the highest number of sbom_occurrences, and output all associations inside the batch:

    batch_num = 1
    Sbom::PossiblyAffectedOccurrencesFinder.new(package_name: 'util-linux', purl_type: 'deb').execute_in_batches(of: 100) do |batch|
      puts "Batch #{batch_num} "
      batch.each_with_index do |sbom_occurrence, idx|
        puts "  Record #{idx+1}"
        possibly_affected_component = Gitlab::VulnerabilityScanning::PossiblyAffectedComponent.from_sbom_occurrence(sbom_occurrence)
        possibly_affected_component.name
        possibly_affected_component.version
        possibly_affected_component.purl_type
        possibly_affected_component.source
        possibly_affected_component.pipeline
        possibly_affected_component.project
      end
      batch_num += 1
      break if batch_num == 3
    end
  5. Record the set of SELECT statements from the first batch of queries in the rails console and execute them in https://console.postgres.ai/gitlab.

Query plans when sbom_source_packages table was empty
  1. https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/25290/commands/80317

    Click to expand
    SELECT "sbom_source_packages"."id"
    FROM "sbom_source_packages"
    WHERE "sbom_source_packages"."name" = 'perl'
    AND "sbom_source_packages"."purl_type" = 11
    ORDER BY "sbom_source_packages"."id" ASC LIMIT 1
    Time: 0.704 ms  
      - planning: 0.607 ms  
      - execution: 0.097 ms  
        - I/O read: 0.000 ms  
        - I/O write: 0.000 ms  
      
    Shared buffers:  
      - hits: 3 (~24.00 KiB) from the buffer pool  
      - reads: 0 from the OS file cache, including disk I/O  
      - dirtied: 0  
      - writes: 0
  2. https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/25290/commands/80318

    Click to expand
    SELECT "sbom_occurrences"."id"
    FROM "sbom_occurrences"
    WHERE "sbom_occurrences"."source_package_id" = 1
    ORDER BY "sbom_occurrences"."id" ASC LIMIT 1
    Time: 8.976 ms  
      - planning: 2.334 ms  
      - execution: 6.642 ms  
        - I/O read: 6.478 ms  
        - I/O write: 0.000 ms  
      
    Shared buffers:  
      - hits: 3 (~24.00 KiB) from the buffer pool  
      - reads: 4 (~32.00 KiB) from the OS file cache, including disk I/O  
      - dirtied: 0  
      - writes: 0     
  3. https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/25290/commands/80319

    Click to expand
    SELECT "sbom_occurrences"."id"
    FROM "sbom_occurrences"
    WHERE "sbom_occurrences"."source_package_id" = 1
    AND "sbom_occurrences"."id" >= 6
    ORDER BY "sbom_occurrences"."id" ASC
    LIMIT 1 OFFSET 100
    Time: 2.465 ms  
      - planning: 2.374 ms  
      - execution: 0.091 ms  
        - I/O read: 0.000 ms  
        - I/O write: 0.000 ms  
      
    Shared buffers:  
      - hits: 7 (~56.00 KiB) from the buffer pool  
      - reads: 0 from the OS file cache, including disk I/O  
      - dirtied: 0  
      - writes: 0   
  4. https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/25290/commands/80320

    Click to expand
    SELECT "sbom_occurrences"."id",
           "sbom_occurrences"."created_at",
           "sbom_occurrences"."updated_at",
           "sbom_occurrences"."component_version_id",
           "sbom_occurrences"."project_id",
           "sbom_occurrences"."pipeline_id",
           "sbom_occurrences"."source_id",
           "sbom_occurrences"."commit_sha",
           "sbom_occurrences"."component_id",
           "sbom_occurrences"."uuid",
           "sbom_occurrences"."package_manager",
           "sbom_occurrences"."component_name",
           "sbom_occurrences"."input_file_path",
           "sbom_occurrences"."licenses",
           "sbom_occurrences"."highest_severity",
           "sbom_occurrences"."vulnerability_count",
           "sbom_occurrences"."source_package_id"
    FROM "sbom_occurrences"
    WHERE "sbom_occurrences"."source_package_id" = 1
    AND "sbom_occurrences"."id" >= 6
    AND "sbom_occurrences"."component_version_id" IS NOT NULL
    Time: 3.027 ms  
      - planning: 2.904 ms  
      - execution: 0.123 ms  
        - I/O read: 0.000 ms  
        - I/O write: 0.000 ms  
      
    Shared buffers:  
      - hits: 7 (~56.00 KiB) from the buffer pool  
      - reads: 0 from the OS file cache, including disk I/O  
      - dirtied: 0  
      - writes: 0     
  5. https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/25290/commands/80321

    Click to expand
    SELECT "ci_pipelines"."id",
           "ci_pipelines"."ref",
           "ci_pipelines"."sha",
           "ci_pipelines"."before_sha",
           "ci_pipelines"."created_at",
           "ci_pipelines"."updated_at",
           "ci_pipelines"."tag",
           "ci_pipelines"."yaml_errors",
           "ci_pipelines"."committed_at",
           "ci_pipelines"."project_id",
           "ci_pipelines"."status",
           "ci_pipelines"."started_at",
           "ci_pipelines"."finished_at",
           "ci_pipelines"."duration",
           "ci_pipelines"."user_id",
           "ci_pipelines"."lock_version",
           "ci_pipelines"."pipeline_schedule_id",
           "ci_pipelines"."source",
           "ci_pipelines"."config_source",
           "ci_pipelines"."protected",
           "ci_pipelines"."failure_reason",
           "ci_pipelines"."iid",
           "ci_pipelines"."merge_request_id",
           "ci_pipelines"."source_sha",
           "ci_pipelines"."target_sha",
           "ci_pipelines"."external_pull_request_id",
           "ci_pipelines"."ci_ref_id",
           "ci_pipelines"."locked",
           "ci_pipelines"."partition_id",
           "ci_pipelines"."auto_canceled_by_id"
    FROM "ci_pipelines"
    WHERE "ci_pipelines"."id" IN (6, 8, 10)
    Time: 3.189 ms  
      - planning: 3.121 ms  
      - execution: 0.068 ms  
        - I/O read: 0.000 ms  
        - I/O write: 0.000 ms  
      
    Shared buffers:  
      - hits: 0 from the buffer pool  
      - reads: 0 from the OS file cache, including disk I/O  
      - dirtied: 0  
      - writes: 0    
  6. https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/25290/commands/80322

    Click to expand
    SELECT "sbom_components".*
    FROM "sbom_components"
    WHERE "sbom_components"."id" IN (6, 9, 11)
    Time: 11.978 ms  
      - planning: 1.337 ms  
      - execution: 10.641 ms  
        - I/O read: 10.445 ms  
        - I/O write: 0.000 ms  
      
    Shared buffers:  
      - hits: 9 (~72.00 KiB) from the buffer pool  
      - reads: 4 (~32.00 KiB) from the OS file cache, including disk I/O  
      - dirtied: 0  
      - writes: 0  
  7. https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/25290/commands/80323

    Click to expand
    SELECT "sbom_sources".*
    FROM "sbom_sources"
    WHERE "sbom_sources"."id" IN (6, 8, 10)
    Time: 21.176 ms  
      - planning: 1.473 ms  
      - execution: 19.703 ms  
        - I/O read: 19.479 ms  
        - I/O write: 0.000 ms  
      
    Shared buffers:  
      - hits: 6 (~48.00 KiB) from the buffer pool  
      - reads: 4 (~32.00 KiB) from the OS file cache, including disk I/O  
      - dirtied: 1 (~8.00 KiB)  
      - writes: 0    
  8. https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/25290/commands/80324

    Click to expand
    SELECT "sbom_component_versions".*
    FROM "sbom_component_versions"
    WHERE "sbom_component_versions"."id" IN (4, 6, 8)
    Time: 6.760 ms  
      - planning: 1.350 ms  
      - execution: 5.410 ms  
        - I/O read: 5.232 ms  
        - I/O write: 0.000 ms  
      
    Shared buffers:  
      - hits: 9 (~72.00 KiB) from the buffer pool  
      - reads: 4 (~32.00 KiB) from the OS file cache, including disk I/O  
      - dirtied: 0  
      - writes: 0  
  9. https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/25290/commands/80325

    Click to expand
    SELECT "projects"."id",
           "projects"."name",
           "projects"."path",
           "projects"."description",
           "projects"."created_at",
           "projects"."updated_at",
           "projects"."creator_id",
           "projects"."namespace_id",
           "projects"."last_activity_at",
           "projects"."import_url",
           "projects"."visibility_level",
           "projects"."archived",
           "projects"."avatar",
           "projects"."merge_requests_template",
           "projects"."star_count",
           "projects"."merge_requests_rebase_enabled",
           "projects"."import_type",
           "projects"."import_source",
           "projects"."approvals_before_merge",
           "projects"."reset_approvals_on_push",
           "projects"."merge_requests_ff_only_enabled",
           "projects"."issues_template",
           "projects"."mirror",
           "projects"."mirror_last_update_at",
           "projects"."mirror_last_successful_update_at",
           "projects"."mirror_user_id",
           "projects"."shared_runners_enabled",
           "projects"."runners_token",
           "projects"."build_allow_git_fetch",
           "projects"."build_timeout",
           "projects"."mirror_trigger_builds",
           "projects"."pending_delete",
           "projects"."public_builds",
           "projects"."last_repository_check_failed",
           "projects"."last_repository_check_at",
           "projects"."only_allow_merge_if_pipeline_succeeds",
           "projects"."has_external_issue_tracker",
           "projects"."repository_storage",
           "projects"."repository_read_only",
           "projects"."request_access_enabled",
           "projects"."has_external_wiki",
           "projects"."ci_config_path",
           "projects"."lfs_enabled",
           "projects"."description_html",
           "projects"."only_allow_merge_if_all_discussions_are_resolved",
           "projects"."repository_size_limit",
           "projects"."printing_merge_request_link_enabled",
           "projects"."auto_cancel_pending_pipelines",
           "projects"."service_desk_enabled",
           "projects"."cached_markdown_version",
           "projects"."delete_error",
           "projects"."last_repository_updated_at",
           "projects"."disable_overriding_approvers_per_merge_request",
           "projects"."storage_version",
           "projects"."resolve_outdated_diff_discussions",
           "projects"."remote_mirror_available_overridden",
           "projects"."only_mirror_protected_branches",
           "projects"."pull_mirror_available_overridden",
           "projects"."jobs_cache_index",
           "projects"."external_authorization_classification_label",
           "projects"."mirror_overwrites_diverged_branches",
           "projects"."pages_https_only",
           "projects"."external_webhook_token",
           "projects"."packages_enabled",
           "projects"."merge_requests_author_approval",
           "projects"."pool_repository_id",
           "projects"."runners_token_encrypted",
           "projects"."bfg_object_map",
           "projects"."detected_repository_languages",
           "projects"."merge_requests_disable_committers_approval",
           "projects"."require_password_to_approve",
           "projects"."max_pages_size",
           "projects"."max_artifacts_size",
           "projects"."pull_mirror_branch_prefix",
           "projects"."remove_source_branch_after_merge",
           "projects"."marked_for_deletion_at",
           "projects"."marked_for_deletion_by_user_id",
           "projects"."autoclose_referenced_issues",
           "projects"."suggestion_commit_message",
           "projects"."project_namespace_id",
           "projects"."hidden",
           "projects"."organization_id"
    FROM "projects" WHERE "projects"."id" = 1
    Time: 15.348 ms  
      - planning: 7.831 ms  
      - execution: 7.517 ms  
        - I/O read: 7.308 ms  
        - I/O write: 0.000 ms  
      
    Shared buffers:  
      - hits: 0 from the buffer pool  
      - reads: 5 (~40.00 KiB) from the OS file cache, including disk I/O  
      - dirtied: 0  
      - writes: 0 

Note: since Ingest source package name from Trivy SBOM comp... (#427095 - closed) • Tetiana Chupryna • 16.9 • On track has not yet been completed, the sbom_source_packages table does not contain any entries, so the actual performance will be different once this table contains thousands of rows. Having said that, since the code introduced by this MR is essentially the same as Add PossiblyAffectedOccurrencesFinder class (!128941 - merged) • Adam Cohen • 16.4, the performance should be the same.

Query plans now that sbom_source_packages table has been populated
  1. https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/26021/commands/81919

    Click to expand
    SELECT "sbom_source_packages"."id"
    FROM "sbom_source_packages"
    WHERE "sbom_source_packages"."name" = 'util-linux'
    AND "sbom_source_packages"."purl_type" = 11
    ORDER BY "sbom_source_packages"."id" ASC LIMIT 1
    Time: 8.741 ms
      - planning: 0.885 ms
      - execution: 7.856 ms
        - I/O read: 7.632 ms
        - I/O write: 0.000 ms
    
    Shared buffers:
      - hits: 6 (~48.00 KiB) from the buffer pool
      - reads: 3 (~24.00 KiB) from the OS file cache, including disk I/O
      - dirtied: 1 (~8.00 KiB)
      - writes: 0
  2. https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/26021/commands/81920

    Click to expand
    SELECT "sbom_occurrences"."id"
    FROM "sbom_occurrences"
    WHERE "sbom_occurrences"."source_package_id" = 6
    ORDER BY "sbom_occurrences"."id" ASC LIMIT 1
    Time: 34.081 ms
      - planning: 2.293 ms
      - execution: 31.788 ms
        - I/O read: 31.548 ms
        - I/O write: 0.000 ms
    
    Shared buffers:
      - hits: 3 (~24.00 KiB) from the buffer pool
      - reads: 5 (~40.00 KiB) from the OS file cache, including disk I/O
      - dirtied: 0
      - writes: 0
  3. https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/26021/commands/81921

    Click to expand
    SELECT "sbom_occurrences"."id"
    FROM "sbom_occurrences"
    WHERE "sbom_occurrences"."source_package_id" = 6
    AND "sbom_occurrences"."id" >= 2640813729
    ORDER BY "sbom_occurrences"."id" ASC LIMIT 1 OFFSET 100
    Time: 114.948 ms
      - planning: 2.748 ms
      - execution: 112.200 ms
        - I/O read: 107.904 ms
        - I/O write: 0.000 ms
    
    Shared buffers:
      - hits: 53 (~424.00 KiB) from the buffer pool
      - reads: 21 (~168.00 KiB) from the OS file cache, including disk I/O
      - dirtied: 6 (~48.00 KiB)
      - writes: 0
  4. https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/26021/commands/81922

    Click to expand
    SELECT "sbom_occurrences"."id"
    FROM "sbom_occurrences"
    WHERE "sbom_occurrences"."source_package_id" = 6
    AND "sbom_occurrences"."id" >= 2640813729
    ORDER BY "sbom_occurrences"."id" ASC LIMIT 1 OFFSET 100
    Time: 2.569 ms
      - planning: 2.377 ms
      - execution: 0.192 ms
        - I/O read: 0.000 ms
        - I/O write: 0.000 ms
    
    Shared buffers:
      - hits: 74 (~592.00 KiB) from the buffer pool
      - reads: 0 from the OS file cache, including disk I/O
      - dirtied: 0
      - writes: 0
  5. https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/26021/commands/81923

    Click to expand
    SELECT "sbom_occurrences"."id",
           "sbom_occurrences"."created_at",
           "sbom_occurrences"."updated_at",
           "sbom_occurrences"."component_version_id",
           "sbom_occurrences"."project_id",
           "sbom_occurrences"."pipeline_id",
           "sbom_occurrences"."source_id",
           "sbom_occurrences"."commit_sha",
           "sbom_occurrences"."component_id",
           "sbom_occurrences"."uuid",
           "sbom_occurrences"."package_manager",
           "sbom_occurrences"."component_name",
           "sbom_occurrences"."input_file_path",
           "sbom_occurrences"."licenses",
           "sbom_occurrences"."highest_severity",
           "sbom_occurrences"."vulnerability_count",
           "sbom_occurrences"."source_package_id",
           "sbom_occurrences"."archived",
           "sbom_occurrences"."traversal_ids"
    FROM "sbom_occurrences"
    WHERE "sbom_occurrences"."source_package_id" = 6
    AND "sbom_occurrences"."id" >= 2640813729
    AND "sbom_occurrences"."id" < 3220948096
    AND "sbom_occurrences"."component_version_id" IS NOT NULL
    Time: 387.241 ms
      - planning: 3.078 ms
      - execution: 384.163 ms
        - I/O read: 382.164 ms
        - I/O write: 0.000 ms
    
    Shared buffers:
      - hits: 14 (~112.00 KiB) from the buffer pool
      - reads: 93 (~744.00 KiB) from the OS file cache, including disk I/O
      - dirtied: 1 (~8.00 KiB)
      - writes: 0
  6. https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/26021/commands/81924

    Click to expand
    SELECT "ci_pipelines"."id",
           "ci_pipelines"."ref",
           "ci_pipelines"."sha",
           "ci_pipelines"."before_sha",
           "ci_pipelines"."created_at",
           "ci_pipelines"."updated_at",
           "ci_pipelines"."tag",
           "ci_pipelines"."yaml_errors",
           "ci_pipelines"."committed_at",
           "ci_pipelines"."project_id",
           "ci_pipelines"."status",
           "ci_pipelines"."started_at",
           "ci_pipelines"."finished_at",
           "ci_pipelines"."duration",
           "ci_pipelines"."user_id",
           "ci_pipelines"."lock_version",
           "ci_pipelines"."pipeline_schedule_id",
           "ci_pipelines"."source",
           "ci_pipelines"."protected",
           "ci_pipelines"."config_source",
           "ci_pipelines"."failure_reason",
           "ci_pipelines"."iid",
           "ci_pipelines"."merge_request_id",
           "ci_pipelines"."source_sha",
           "ci_pipelines"."target_sha",
           "ci_pipelines"."external_pull_request_id",
           "ci_pipelines"."ci_ref_id",
           "ci_pipelines"."locked",
           "ci_pipelines"."partition_id",
           "ci_pipelines"."auto_canceled_by_id"
    FROM "ci_pipelines"
    WHERE "ci_pipelines"."id"
    IN (1160546745,
        1164863707,
        1163778390,
        1165715976,
        1165719595,
        1165800645,
        1165801000,
        1165800410,
        1165800803,
        1165800811,
        1165800588,
        1165800916,
        1165800841,
        1165800827
    )
    Time: 2.851 ms
      - planning: 2.792 ms
      - execution: 0.059 ms
        - I/O read: 0.000 ms
        - I/O write: 0.000 ms
    
    Shared buffers:
      - hits: 0 from the buffer pool
      - reads: 0 from the OS file cache, including disk I/O
      - dirtied: 0
      - writes: 0
  7. https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/26021/commands/81925

    Click to expand
    SELECT "sbom_components".*
    FROM "sbom_components"
    WHERE "sbom_components"."id"
    IN (2020272554,
        2020272567,
        2020272577,
        2020272589,
        2020272604,
        2020272614,
        2020272618,
        2020272630,
        2020272544,
        2153538141,
        2153906403,
        2153538184,
        2153906597,
        2153538235,
        2153538268,
        2153538283,
        2153538296,
        2153538326
    )
    Time: 60.946 ms
      - planning: 1.394 ms
      - execution: 59.552 ms
        - I/O read: 58.932 ms
        - I/O write: 0.000 ms
    
    Shared buffers:
      - hits: 46 (~368.00 KiB) from the buffer pool
      - reads: 29 (~232.00 KiB) from the OS file cache, including disk I/O
      - dirtied: 14 (~112.00 KiB)
      - writes: 0
  8. https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/26021/commands/81926

    Click to expand
    SELECT "sbom_sources".*
    FROM "sbom_sources"
    WHERE "sbom_sources"."id"
    IN (86309855,
        86311938,
        86352907,
        86352931,
        86353001,
        86352908,
        86353043,
        86353076,
        86353095,
        86353102,
        86353140
    )
    Time: 36.604 ms
      - planning: 1.579 ms
      - execution: 35.025 ms
        - I/O read: 34.461 ms
        - I/O write: 0.000 ms
    
    Shared buffers:
      - hits: 22 (~176.00 KiB) from the buffer pool
      - reads: 14 (~112.00 KiB) from the OS file cache, including disk I/O
      - dirtied: 7 (~56.00 KiB)
      - writes: 0
  9. https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/26021/commands/81927

    Click to expand
    SELECT "sbom_component_versions".*
    FROM "sbom_component_versions"
    WHERE "sbom_component_versions"."id"
    IN (2325784353,
        2325784366,
        2325784376,
        2325784388,
        2325784403,
        2325784413,
        2325784417,
        2325784429,
        2378309424,
        2378309446,
        2378309471,
        2378309486,
        2378309497,
        2378309504,
        2378309513,
        3220388355,
        2481449429,
        2481449553,
        2481449632,
        2481449785,
        2481449847,
        2481449867,
        2481449908,
        2481449960,
        3220955759,
        3220957138,
        3220501598,
        2490119982,
        2490120029,
        2490120126,
        2490120189,
        2490120215,
        2490120265,
        2490120302
    )
    Time: 79.408 ms
      - planning: 2.121 ms
      - execution: 77.287 ms
        - I/O read: 74.225 ms
        - I/O write: 0.000 ms
    
    Shared buffers:
      - hits: 92 (~736.00 KiB) from the buffer pool
      - reads: 47 (~376.00 KiB) from the OS file cache, including disk I/O
      - dirtied: 8 (~64.00 KiB)
      - writes: 0
  10. https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/26021/commands/81928

    Click to expand
    SELECT "projects"."id",
           "projects"."name",
           "projects"."path",
           "projects"."description",
           "projects"."created_at",
           "projects"."updated_at",
           "projects"."creator_id",
           "projects"."namespace_id",
           "projects"."last_activity_at",
           "projects"."import_url",
           "projects"."visibility_level",
           "projects"."archived",
           "projects"."merge_requests_template",
           "projects"."star_count",
           "projects"."merge_requests_rebase_enabled",
           "projects"."import_type",
           "projects"."import_source",
           "projects"."avatar",
           "projects"."approvals_before_merge",
           "projects"."reset_approvals_on_push",
           "projects"."merge_requests_ff_only_enabled",
           "projects"."issues_template",
           "projects"."mirror",
           "projects"."mirror_last_update_at",
           "projects"."mirror_last_successful_update_at",
           "projects"."mirror_user_id",
           "projects"."shared_runners_enabled",
           "projects"."runners_token",
           "projects"."build_allow_git_fetch",
           "projects"."build_timeout",
           "projects"."mirror_trigger_builds",
           "projects"."public_builds",
           "projects"."pending_delete",
           "projects"."last_repository_check_failed",
           "projects"."last_repository_check_at",
           "projects"."only_allow_merge_if_pipeline_succeeds",
           "projects"."has_external_issue_tracker",
           "projects"."repository_storage",
           "projects"."request_access_enabled",
           "projects"."has_external_wiki",
           "projects"."repository_read_only",
           "projects"."lfs_enabled",
           "projects"."description_html",
           "projects"."only_allow_merge_if_all_discussions_are_resolved",
           "projects"."repository_size_limit",
           "projects"."service_desk_enabled",
           "projects"."printing_merge_request_link_enabled",
           "projects"."auto_cancel_pending_pipelines",
           "projects"."cached_markdown_version",
           "projects"."last_repository_updated_at",
           "projects"."ci_config_path",
           "projects"."disable_overriding_approvers_per_merge_request",
           "projects"."delete_error",
           "projects"."storage_version",
           "projects"."resolve_outdated_diff_discussions",
           "projects"."remote_mirror_available_overridden",
           "projects"."only_mirror_protected_branches",
           "projects"."pull_mirror_available_overridden",
           "projects"."jobs_cache_index",
           "projects"."external_authorization_classification_label",
           "projects"."mirror_overwrites_diverged_branches",
           "projects"."external_webhook_token",
           "projects"."pages_https_only",
           "projects"."packages_enabled",
           "projects"."merge_requests_author_approval",
           "projects"."pool_repository_id",
           "projects"."runners_token_encrypted",
           "projects"."bfg_object_map",
           "projects"."detected_repository_languages",
           "projects"."merge_requests_disable_committers_approval",
           "projects"."require_password_to_approve",
           "projects"."max_pages_size",
           "projects"."max_artifacts_size",
           "projects"."pull_mirror_branch_prefix",
           "projects"."remove_source_branch_after_merge",
           "projects"."marked_for_deletion_at",
           "projects"."marked_for_deletion_by_user_id",
           "projects"."suggestion_commit_message",
           "projects"."autoclose_referenced_issues",
           "projects"."project_namespace_id",
           "projects"."hidden",
           "projects"."organization_id"
    FROM "projects"
    WHERE "projects"."id"
    IN (48478575,
        40664079,
        48475463,
        21810599,
        45887002,
        47498572,
        47498580,
        47498578,
        47498582,
        47498576,
        47498574,
        47498577,
        47498579,
        47498581
    )
    Time: 105.457 ms
      - planning: 6.754 ms
      - execution: 98.703 ms
        - I/O read: 97.163 ms
        - I/O write: 0.000 ms
    
    Shared buffers:
      - hits: 45 (~360.00 KiB) from the buffer pool
      - reads: 28 (~224.00 KiB) from the OS file cache, including disk I/O
      - dirtied: 0
      - writes: 0

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Related to Update PossiblyAffectedOccurrencesFinder to wor... (#428681 - closed) • Adam Cohen • 16.9 • On track

Edited by Adam Cohen

Merge request reports