Add partition pruning to pipeline relations not in the CI database
Follow-up from [#593701 (comment 3328607911)](https://gitlab.com/gitlab-org/gitlab/-/work_items/593701#note_3328607911). Apply partition pruning to pipeline associations on models that are not in the CI database, mirroring the approach already used by `MergeRequest#head_pipeline` (`app/models/merge_request.rb:946-950`, !230857). ## Reference (already implemented) | Model | File | Association | FK | |---|---|---|---| | `MergeRequest` | `app/models/merge_request.rb:119` | `head_pipeline` | `head_pipeline_id` | ## Main DB models (`< ApplicationRecord`) — need the fix | # | Model | File | Association | FK column | |---|---|---|---|---| | 1 | `MergeRequest::Metrics` | `app/models/merge_request/metrics.rb:5` | `pipeline` | `pipeline_id` | | 2 | `Packages::BuildInfo` | `app/models/packages/build_info.rb:5` | `pipeline` | `pipeline_id` | | 3 | `Packages::PackageFileBuildInfo` | `app/models/packages/package_file_build_info.rb:5` | `pipeline` | `pipeline_id` | | 4 | `Environments::Job` | `app/models/environments/job.rb:9` | `pipeline` | `ci_pipeline_id` | | 5 | `MergeTrains::Car` | `ee/app/models/merge_trains/car.rb:18` | `pipeline` | `pipeline_id` | | 6 | `Security::PolicySchedulePipeline` | `ee/app/models/security/policy_schedule_pipeline.rb:8` | `pipeline` | `pipeline_id` | | 7 | `Security::ScheduledPipelineExecutionPolicyTestRun` | `ee/app/models/security/scheduled_pipeline_execution_policy_test_run.rb:10` | `pipeline` | `pipeline_id` | ## Sec DB models (`< SecApplicationRecord`) — need the fix | # | Model | File | Association | FK column | |---|---|---|---|---| | 8 | `Vulnerabilities::Statistic` | `ee/app/models/vulnerabilities/statistic.rb:30` | `pipeline` | `latest_pipeline_id` | | 9 | `Vulnerabilities::Finding` | `ee/app/models/vulnerabilities/finding.rb:111` | `initial_finding_pipeline` | `initial_pipeline_id` | | 10 | `Vulnerabilities::Finding` | `ee/app/models/vulnerabilities/finding.rb:112` | `latest_finding_pipeline` | `latest_pipeline_id` | | 11 | `Vulnerabilities::PartialScan` | `ee/app/models/vulnerabilities/partial_scan.rb:15` | `pipeline` | `pipeline_id` | | 12 | `Vulnerabilities::Feedback` | `ee/app/models/vulnerabilities/feedback.rb:15` | `pipeline` | `pipeline_id` | | 13 | `Security::Scan` | `ee/app/models/security/scan.rb:15` | `pipeline` | `pipeline_id` | | 14 | `Sbom::Occurrence` | `ee/app/models/sbom/occurrence.rb:20` | `pipeline` | `pipeline_id` | | 15 | `Sbom::OccurrenceRef` | `ee/app/models/sbom/occurrence_ref.rb:22` | `pipeline` | `pipeline_id` | | 16 | `Dependencies::DependencyListExport` | `ee/app/models/dependencies/dependency_list_export.rb:15` | `pipeline` | `pipeline_id` | | 17 | `Dast::ProfilesPipeline` | `ee/app/models/dast/profiles_pipeline.rb:9` | `ci_pipeline` | `ci_pipeline_id` | | 18 | `Dast::PreScanVerification` | `ee/app/models/dast/pre_scan_verification.rb:7` | `ci_pipeline` | `ci_pipeline_id` | ## Summary - **18 associations** across **17 distinct models** require the override. - 7 in the Main DB, 11 in the Sec DB. - `Vulnerabilities::Finding` needs two overrides (initial + latest).
issue