BigW Consortium Gitlab

  1. 16 May, 2016 1 commit
    • Make upcoming milestone work across projects · 750b2ff0
      Sean McGivern authored
      Before: we took the next milestone due across all projects in the
      search and found issues whose milestone title matched that
      one. Problems:
      
      1. The milestone could be closed.
      2. Different projects have milestones with different schedules.
      3. Different projects have milestones with different titles.
      4. Different projects can have milestones with different schedules, but
         the _same_ title. That means we could show issues from a past
         milestone, or one that's far in the future.
      
      After: gather the ID of the next milestone on each project we're looking
      at, and find issues with those milestone IDs. Problems:
      
      1. For a lot of projects, this can return a lot of IDs.
      2. The SQL query has to be different between Postgres and MySQL, because
         MySQL is much more lenient with HAVING: as well as the columns
         appearing in GROUP BY or in aggregate clauses, MySQL allows them to
         appear in the SELECT list (un-aggregated).
  2. 21 Apr, 2016 1 commit
  3. 20 Apr, 2016 7 commits
  4. 19 Apr, 2016 1 commit
  5. 13 Apr, 2016 1 commit
  6. 29 Mar, 2016 2 commits
  7. 21 Mar, 2016 1 commit
  8. 20 Mar, 2016 2 commits
  9. 13 Mar, 2016 1 commit
  10. 12 Mar, 2016 3 commits
  11. 07 Mar, 2016 1 commit
  12. 19 Feb, 2016 2 commits
  13. 18 Jan, 2016 1 commit
    • Scope issue projects to a Group when possible · d6a8021e
      Yorick Peterse authored
      When using IssuableFinder with a Group we can greatly reduce the amount
      of projects operated on (due to not including all public/internal
      projects) by simply passing it down to the ProjectsFinder class.
      
      This reduces the timings of the involved queries from roughly 300
      ms to roughly 20 ms.
      
      Fixes gitlab-org/gitlab-ce#4071, gitlab-org/gitlab-ce#3707
  14. 07 Jan, 2016 1 commit
    • Drop projects order in IssuableFinder · fc443ea7
      Yorick Peterse authored
      When grabbing the projects to filter issues by we don't care about the
      order they're returned in. By removing the ORDER BY the resulting query
      can be quite a bit faster.
  15. 19 Nov, 2015 3 commits
    • Use a JOIN in IssuableFinder#by_project · 8591cc02
      Yorick Peterse authored
      When using IssuableFinder/IssuesFinder to find issues for multiple
      projects it's more efficient to use a JOIN + a "WHERE project_id IN"
      condition opposed to running a sub-query.
      
      This change means that when finding issues without labels we're now
      using the following SQL:
      
          SELECT issues.*
          FROM issues
          JOIN projects ON projects.id = issues.project_id
      
          LEFT JOIN label_links ON label_links.target_type = 'Issue'
                                AND label_links.target_id  = issues.id
      
          WHERE (
              projects.id IN (...)
              OR projects.visibility_level IN (20, 10)
          )
          AND issues.state IN ('opened','reopened')
          AND label_links.id IS NULL
          ORDER BY issues.id DESC;
      
      instead of:
      
          SELECT issues.*
          FROM issues
          LEFT JOIN label_links ON label_links.target_type = 'Issue'
                                AND label_links.target_id  = issues.id
      
          WHERE issues.project_id IN (
              SELECT id
              FROM projects
              WHERE id IN (...)
              OR visibility_level IN (20,10)
          )
          AND issues.state IN ('opened','reopened')
          AND label_links.id IS NULL
          ORDER BY issues.id DESC;
      
      The big benefit here is that in the last case PostgreSQL can't properly
      use all available indexes. In particular it ends up performing a
      sequence scan on the "label_links" table (processing around 290 000
      rows). The new query is roughly 2x as fast as the old query.
    • Memoize IssuableFinder#projects · e9cd58f5
      Yorick Peterse authored
      Since this method's returned data doesn't change between calls on the
      same IssuableFinder instance we can just memoize this similar to the
      "project" method.
  16. 19 Oct, 2015 1 commit
  17. 16 Oct, 2015 3 commits
  18. 07 Oct, 2015 1 commit
  19. 03 Oct, 2015 1 commit
  20. 07 Jul, 2015 2 commits
  21. 19 Jun, 2015 1 commit
  22. 27 May, 2015 1 commit
  23. 25 May, 2015 1 commit
  24. 30 Apr, 2015 1 commit
    • Group milestones by title in the dashboard and all other issue views · e6ee8d0e
      Dominik Sander authored
      This groups milestones by title for issue views like it has been done for
      the milestone dashboard/project overview. Before milestones with the
      same title would show up multiple times in the filter dropdown and one could
      only filter per project and milestone. Now the milestone filter is based
      on the title of the milestone, i.e. all issues marked with the same
      milestone title are shown.