Skip to content

Update all relations to use `disable_joins:` that cross join many DBs

As part of identified changes of PoC is to mark relations that cross-join DBs to prefer to use SELECT id instead of LEFT JOIN.

class Runner
   has_many :projects, through: :runner_projects, disable_joins: true
end

Identified relations

Model Relation Group (?) Issue Feature Flag
Environment last_deployable group::release
Environment last_visible_deployable group::release
Ci::Pipeline deployments group::release
Ci::Pipeline environments group::release
Ci::Runner projects group::verify
Ci::Runner groups group::verify
Packages::PackageFile pipelines group::package
Packages::Package pipelines group::package
Dast::Profile ci_pipelines group::security
Project upstream_projects group::verify
Project downstream_projects group::verify
Ci::Pipeline security_scans group::security
Security::Finding pipelines group::security
Vulnerabilities::Finding pipelines group::security

Proposal

  1. Use backported disable_joins: #336420 (closed)
  2. For each relation use a lambda syntax to feature-flag it
  3. Validate performance and make disable_joins: true permament
Edited by Vijay Hawoldar