1. 08 May, 2016 1 commit
  2. 29 Apr, 2016 1 commit
    • Yorick Peterse's avatar
      Use a query in Project#protected_branch? · e28d1fa3
      Yorick Peterse authored
      This changes Project#protected_branch? to use a query to check if a
      branch is protected, instead of loading all ProtectedBranch records into
      memory just to check if the list of names includes a given branch name.
      e28d1fa3
  3. 25 Apr, 2016 1 commit
  4. 16 Apr, 2016 1 commit
  5. 11 Apr, 2016 1 commit
  6. 31 Mar, 2016 1 commit
  7. 25 Mar, 2016 1 commit
  8. 22 Mar, 2016 2 commits
  9. 19 Mar, 2016 2 commits
    • Yorick Peterse's avatar
      Cache output of Repository#exists? · 68a4c98f
      Yorick Peterse authored
      This caches the output of Repository#exists? in Redis while making sure
      it's flushed properly when creating new repositories, deleting them,
      etc.
      
      For the ProjectWiki tests to work I had to make ProjectWiki#create_repo!
      public as testing private methods in RSpec is a bit of a pain.
      68a4c98f
    • Felipe Artur's avatar
      Fix specs · 8b830b8c
      Felipe Artur authored
      8b830b8c
  10. 18 Mar, 2016 1 commit
  11. 15 Mar, 2016 1 commit
    • Yorick Peterse's avatar
      Ignore eager loading in Project.search UNION · c7427602
      Yorick Peterse authored
      The queries that are UNION'd together don't need any eager loading
      (since we really only use the resulting SQL instead of having
      ActiveRecord actually run the queries). By dropping any eager loaded
      associations queries such as the following work instead of producing a
      SQL error:
      
          Project.all.includes(:namespace).search('foo')
      c7427602
  12. 11 Mar, 2016 3 commits
    • Baldinof's avatar
      e8c72354
    • Yorick Peterse's avatar
      Use ILIKE in Project.search_by_title · db615d0a
      Yorick Peterse authored
      Similar to the changes made to Project.search the method
      Project.search_by_title now also uses Arel so it can automatically use
      ILIKE/LIKE instead of the lower() function.
      db615d0a
    • Yorick Peterse's avatar
      Use ILIKE/LIKE + UNION in Project.search · 135659a7
      Yorick Peterse authored
      This chance is broken up in two steps:
      
      1. Use ILIKE on PostgreSQL and LIKE on MySQL, instead of using
         "WHERE lower(x) LIKE lower(y)" as ILIKE is significantly faster than
         using lower(). In many cases the use of lower() will force a slow
         sequence scan.
      
      2. Instead of using 1 query that searches both projects and namespaces
         using a JOIN we're using 2 separate queries that are UNION'd
         together. Using a JOIN would force a slow sequence scan, using a
         UNION avoids this.
      
      This method now uses Arel as Arel automatically uses ILIKE on PostgreSQL
      and LIKE on MySQL, removing the need to handle this manually.
      135659a7
  13. 10 Mar, 2016 1 commit
  14. 09 Mar, 2016 1 commit
  15. 08 Mar, 2016 1 commit
  16. 07 Mar, 2016 2 commits
  17. 26 Feb, 2016 1 commit
    • Yorick Peterse's avatar
      Flush repository caches before renaming projects · 1dfef90a
      Yorick Peterse authored
      This ensures that if a project is later re-created using the old path it
      doesn't end up re-using the old cache. This also ensures we don't keep
      the cache around until its expired by Redis itself.
      
      Fixes gitlab-org/gitlab-ce#13790
      1dfef90a
  18. 19 Feb, 2016 1 commit
  19. 06 Jan, 2016 1 commit
  20. 24 Dec, 2015 1 commit
  21. 12 Dec, 2015 1 commit
  22. 11 Dec, 2015 4 commits
  23. 09 Dec, 2015 2 commits
  24. 03 Dec, 2015 1 commit
  25. 19 Nov, 2015 1 commit
  26. 18 Nov, 2015 1 commit
  27. 13 Nov, 2015 1 commit
  28. 06 Oct, 2015 1 commit
    • Yorick Peterse's avatar
      Revamp trending projects query · b7abba0c
      Yorick Peterse authored
      This changes the query to use a COUNT nested in an INNER JOIN, instead
      of a COUNT plus a GROUP BY. There are two reasons for this:
      
      1. Using a COUNT in an INNER JOIN can be quite a bit faster.
      2. The use of a GROUP BY means that method calls such as "any?"
         (and everything else that calls "count") operate on a Hash that
         counts the amount of notes on a per project basis, instead of just
         counting the total amount of projects.
      
      The query has been moved into Project.trending as its logic is simple
      enough. As a result of this testing the TrendingProjectsFinder class
      simply involves testing if the right methods are called, removing the
      need for setting up database records.
      b7abba0c
  29. 03 Oct, 2015 1 commit
  30. 02 Oct, 2015 1 commit
  31. 29 Sep, 2015 1 commit