1. 01 11月, 2018 1 次提交
  2. 26 10月, 2018 2 次提交
  3. 18 10月, 2018 1 次提交
  4. 05 10月, 2018 1 次提交
  5. 03 10月, 2018 1 次提交
  6. 02 10月, 2018 1 次提交
  7. 01 10月, 2018 1 次提交
  8. 12 9月, 2018 1 次提交
  9. 11 9月, 2018 1 次提交
  10. 30 7月, 2018 1 次提交
  11. 28 6月, 2018 1 次提交
  12. 07 6月, 2018 1 次提交
    • S
      Force Postgres to avoid trigram indexes when in a group · c03386c3
      Sean McGivern 提交于
      When filtering issues with a search string in a group, we observed on GitLab.com
      that Postgres was using an inefficient query plan, preferring the (global)
      trigram indexes on description and title, rather than using a filter on the
      restricted set of issues within the group.
      
      Change the callers of the IssuableFinder to use a CTE in this case to fence the
      rest of the query from the LIKE filters, so that the optimiser is forced to
      perform the filter in the order we prefer.
      
      This will only force the use of a CTE when:
      
      1. The use_cte_for_search params is truthy.
      2. We are using Postgres.
      3. We have passed the `search` param.
      
      The third item is important - searching issues using the search box does not use
      the finder in this way, but contructs a query and appends `full_search` to
      that. For some reason, this query does not suffer from the same issue.
      
      Currenly, we only pass this param when filtering issuables (issues or MRs) in a
      group context.
      c03386c3
  13. 06 6月, 2018 1 次提交
    • S
      Simplify issuable finder queries · 57e6a98c
      Sean McGivern 提交于
      We had `item_project_ids` to help make slow queries on the dashboard faster, but
      this isn't necessary any more - the queries are plenty fast, and we forbid
      searching the dashboard without filters.
      57e6a98c
  14. 21 5月, 2018 1 次提交
  15. 10 4月, 2018 1 次提交
    • A
      Reduce complexity of issuable finder query. · cdfe437e
      Andreas Brandl 提交于
      This removes the extra check for project-ids which is not needed at all.
      This does not necessarily reduce execution time of the query, but
      improves planning time by a few millseconds.
      
      Closes #37125.
      cdfe437e
  16. 04 4月, 2018 1 次提交
  17. 05 3月, 2018 1 次提交
  18. 23 2月, 2018 1 次提交
  19. 21 2月, 2018 1 次提交
    • S
      Refactor IssuableFinder to extract model-specific logic · c2fc4066
      Sean McGivern 提交于
      By extracting a new `filter_items` method, we can override that in the
      IssuesFinder and MergeRequestsFinder separately, so we don't need checks that
      the model is the correct one, because we can just use the class we're in to know
      that.
      
      We can do the same for the VALID_PARAMS constant, by making it a class method.
      c2fc4066
  20. 01 2月, 2018 1 次提交
  21. 05 1月, 2018 1 次提交
  22. 13 11月, 2017 1 次提交
  23. 26 9月, 2017 2 次提交
  24. 19 9月, 2017 1 次提交
  25. 05 9月, 2017 1 次提交
    • Y
      Re-use issue/MR counts for the pagination system · 42062a45
      Yorick Peterse 提交于
      This changes the issue and MR index pages so the pagination system
      re-uses the output of the COUNT(*) query used to calculate the number of
      rows per state (opened, closed, etc). This removes the need for an
      additional COUNT(*) on both pages.
      42062a45
  26. 31 8月, 2017 1 次提交
    • S
      Remove issuable finder count caching · e7817fc1
      Sean McGivern 提交于
      We're going to cache the total open count separately, and then just perform
      these counts on the list. We already do that to get the pagination information,
      through Kaminari, and a future change will make Kaminari reuse the query results
      from earlier in the request.
      e7817fc1
  27. 30 8月, 2017 1 次提交
  28. 28 7月, 2017 1 次提交
    • Y
      Merge issuable "reopened" state into "opened" · 6ef87a20
      Yorick Peterse 提交于
      Having two states that essentially mean the same thing is very much like
      having a boolean "true" and boolean "mostly-true": it's rather silly.
      This commit merges the "reopened" state into the "opened" state while
      taking care of system notes still showing messages along the lines of
      "Alice reopened this issue".
      
      A big benefit from having only two states (opened and closed) is that
      indexing and querying becomes simpler and more performant. For example,
      to get all the opened queries we no longer have to query both states:
      
          SELECT *
          FROM issues
          WHERE project_id = 2
          AND state IN ('opened', 'reopened');
      
      Instead we can query a single state directly, which can be much faster:
      
          SELECT *
          FROM issues
          WHERE project_id = 2
          AND state = 'opened';
      
      Further, only having two states makes indexing easier as we will only
      ever filter (and thus scan an index) using a single value. Partial
      indexes could help but aren't supported on MySQL, complicating the
      development process and not being helpful for MySQL.
      6ef87a20
  29. 25 7月, 2017 1 次提交
  30. 21 7月, 2017 1 次提交
  31. 19 7月, 2017 3 次提交
  32. 08 7月, 2017 1 次提交
  33. 07 7月, 2017 2 次提交
  34. 30 6月, 2017 2 次提交