Skip to content
Snippets Groups Projects

Resolve "Linear roots scope"

Merged Alex Pooley requested to merge 339441-linear-roots-scope into master
All threads resolved!

What does this MR do and why?

Introduce a recursive and linear roots scope to query for all root ancestors. The linear set of scopes are more efficient and less cumbersome than the recursive set.

Group.where('created_at > ?', 2.weeks.ago).roots

SQL

SELECT 
  "namespaces"."id", 
  "namespaces"."name", 
  "namespaces"."path", 
  "namespaces"."owner_id", 
  "namespaces"."created_at", 
  "namespaces"."updated_at", 
  "namespaces"."type", 
  "namespaces"."description", 
  "namespaces"."avatar", 
  "namespaces"."membership_lock", 
  "namespaces"."share_with_group_lock", 
  "namespaces"."visibility_level", 
  "namespaces"."request_access_enabled", 
  "namespaces"."ldap_sync_status", 
  "namespaces"."ldap_sync_error", 
  "namespaces"."ldap_sync_last_update_at", 
  "namespaces"."ldap_sync_last_successful_update_at", 
  "namespaces"."ldap_sync_last_sync_at", 
  "namespaces"."description_html", 
  "namespaces"."lfs_enabled", 
  "namespaces"."parent_id", 
  "namespaces"."shared_runners_minutes_limit", 
  "namespaces"."repository_size_limit", 
  "namespaces"."require_two_factor_authentication", 
  "namespaces"."two_factor_grace_period", 
  "namespaces"."cached_markdown_version", 
  "namespaces"."project_creation_level", 
  "namespaces"."runners_token", 
  "namespaces"."file_template_project_id", 
  "namespaces"."saml_discovery_token", 
  "namespaces"."runners_token_encrypted", 
  "namespaces"."custom_project_templates_group_id", 
  "namespaces"."auto_devops_enabled", 
  "namespaces"."extra_shared_runners_minutes_limit", 
  "namespaces"."last_ci_minutes_notification_at", 
  "namespaces"."last_ci_minutes_usage_notification_level", 
  "namespaces"."subgroup_creation_level", 
  "namespaces"."emails_disabled", 
  "namespaces"."max_pages_size", 
  "namespaces"."max_artifacts_size", 
  "namespaces"."mentions_disabled", 
  "namespaces"."default_branch_protection", 
  "namespaces"."unlock_membership_to_ldap", 
  "namespaces"."max_personal_access_token_lifetime", 
  "namespaces"."push_rule_id", 
  "namespaces"."shared_runners_enabled", 
  "namespaces"."allow_descendants_override_disabled_shared_runners", 
  "namespaces"."traversal_ids" 
FROM 
  "namespaces" 
WHERE 
  "namespaces"."type" = 'Group' 
  AND "namespaces"."id" IN (
    SELECT 
      traversal_ids[1] 
    FROM 
      "namespaces" 
    WHERE 
      "namespaces"."type" = 'Group' 
      AND "namespaces"."id" IN (12285090, 12285085, 12128747)
  )

Query plan https://console.postgres.ai/gitlab/gitlab-production-tunnel-pg12/sessions/7226/commands/25611

How to set up and validate locally

Feature.enable :use_traversal_ids
Feature.enable :use_traversal_ids_roots

roots = FactoryBot.create_list :group, 4, :with_hierarchy
Group.all.roots == roots

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 #339441 (closed)

Edited by Alex Pooley

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Marius Bobin
  • Marius Bobin removed review request for @mbobin

    removed review request for @mbobin

  • Tiger Watson approved this merge request

    approved this merge request

  • Tiger Watson removed review request for @tigerwnz

    removed review request for @tigerwnz

  • :wave: @tigerwnz, thanks for approving this merge request.

    This is the first time the merge request is approved. To ensure full test coverage, a new pipeline has been started.

    For more info, please refer to the following links:

  • Alex Pooley added 174 commits

    added 174 commits

    Compare with previous version

  • Alex Pooley requested review from @mbobin

    requested review from @mbobin

  • Marius Bobin approved this merge request

    approved this merge request

  • Marius Bobin requested review from @lulalala and removed review request for @mbobin

    requested review from @lulalala and removed review request for @mbobin

  • Mark Chao approved this merge request

    approved this merge request

  • Mark Chao resolved all threads

    resolved all threads

  • Mark Chao enabled an automatic merge when the pipeline for 2c8b78af succeeds

    enabled an automatic merge when the pipeline for 2c8b78af succeeds

  • merged

  • Mark Chao mentioned in commit 62abdcc4

    mentioned in commit 62abdcc4

  • added workflowcanary label and removed workflowstaging label

  • added workflowproduction label and removed workflowcanary label

  • mentioned in epic &5296 (closed)

  • Please register or sign in to reply
    Loading