- 25 Feb, 2018 2 commits
-
-
Ian Baum authored
[ci skip]
-
Grzegorz Bizon authored
QA specs for merge request rebasing and squashing Closes gitlab-qa#78 See merge request gitlab-org/gitlab-ee!4288
-
- 24 Feb, 2018 7 commits
-
-
Grzegorz Bizon authored
Move feature expose logic from serializer to the model Closes #4336 See merge request gitlab-org/gitlab-ee!4690
-
Dmitriy Zaporozhets authored
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
-
Dmitriy Zaporozhets authored
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
-
Dmitriy Zaporozhets authored
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
-
Grzegorz Bizon authored
Port to EE "Minimal fix for artifacts service" Closes gitlab-ce#43022 See merge request gitlab-org/gitlab-ee!4695
-
Shinya Maeda authored
This reverts commit 34e16110.
-
Clement Ho authored
Move RecentSearchesDropdownContent vue component See merge request gitlab-org/gitlab-ee!4682
-
- 23 Feb, 2018 31 commits
-
-
Stan Hu authored
Merge branch 'mk/fix-pg-undefined-table-untracked_files_for_uploads-does-not-exist-ee' into 'master' [EE port] Fix deletion attempts on dropped tables See merge request gitlab-org/gitlab-ee!4712
-
Michael Kozono authored
-
Felipe Artur authored
-
Jacob Schatz authored
EE port of "Reduce webpack merge conflicts" See merge request gitlab-org/gitlab-ee!4705
-
Mike Greiling authored
move webpack bundles we intend to keep below the list of bundles we're refactoring to reduce conflicts
-
Mike Greiling authored
-
Mike Greiling authored
-
Clement Ho authored
Use unique keys for token inputs while add same value twice to an epic Closes #4992 See merge request gitlab-org/gitlab-ee!4618
-
Shinya Maeda authored
This reverts commit 28c6a6b0.
-
Shinya Maeda authored
-
Shinya Maeda authored
-
Shinya Maeda authored
-
Mike Greiling authored
Convert switch into if statement See merge request gitlab-org/gitlab-ee!4684
-
Shinya Maeda authored
-
Shinya Maeda authored
-
Shinya Maeda authored
-
Shinya Maeda authored
-
Kamil Trzciński authored
-
Douwe Maan authored
EE: Improve performance of searching for and auto completing of users See merge request gitlab-org/gitlab-ee!4575
-
Marin Jankovski authored
CE upstream - 2018-02-23 12:10 UTC See merge request gitlab-org/gitlab-ee!4692
-
Bob Van Landuyt authored
-
Bob Van Landuyt authored
-
Bob Van Landuyt authored
-
Bob Van Landuyt authored
-
Bob Van Landuyt authored
-
Bob Van Landuyt authored
-
GitLab Bot authored
# Conflicts: # app/controllers/groups/application_controller.rb # app/finders/issuable_finder.rb # app/policies/base_policy.rb # app/policies/merge_request_policy.rb # app/views/layouts/nav/sidebar/_group.html.haml # locale/gitlab.pot [ci skip]
-
Yorick Peterse authored
-
Yorick Peterse authored
This optimises searching for users when using queries consisting out of one or two characters such as "ab". We optimise such cases by searching for `LOWER(name)` and `LOWER(username)` instead of using `ILIKE`. Using `LOWER` produces a _much_ better performing query. For example, when searching for all users matching the term "a" we'd produce the following plan: Limit (cost=637.69..637.74 rows=20 width=805) (actual time=41.983..41.995 rows=20 loops=1) Buffers: shared hit=8330 -> Sort (cost=637.69..638.61 rows=368 width=805) (actual time=41.982..41.990 rows=20 loops=1) Sort Key: (CASE WHEN ((name)::text = 'a'::text) THEN 0 WHEN ((username)::text = 'a'::text) THEN 1 WHEN ((email)::text = 'a'::text) THEN 2 ELSE 3 END), name Sort Method: top-N heapsort Memory: 35kB Buffers: shared hit=8330 -> Bitmap Heap Scan on users (cost=75.47..627.89 rows=368 width=805) (actual time=9.452..41.305 rows=277 loops=1) Recheck Cond: (((name)::text ~~* 'a'::text) OR ((username)::text ~~* 'a'::text) OR ((email)::text = 'a'::text)) Rows Removed by Index Recheck: 7601 Heap Blocks: exact=7636 Buffers: shared hit=8327 -> BitmapOr (cost=75.47..75.47 rows=368 width=0) (actual time=8.290..8.290 rows=0 loops=1) Buffers: shared hit=691 -> Bitmap Index Scan on index_users_on_name_trigram (cost=0.00..38.85 rows=180 width=0) (actual time=4.369..4.369 rows=4071 loops=1) Index Cond: ((name)::text ~~* 'a'::text) Buffers: shared hit=360 -> Bitmap Index Scan on index_users_on_username_trigram (cost=0.00..34.41 rows=188 width=0) (actual time=3.896..3.896 rows=4140 loops=1) Index Cond: ((username)::text ~~* 'a'::text) Buffers: shared hit=328 -> Bitmap Index Scan on users_email_key (cost=0.00..1.94 rows=1 width=0) (actual time=0.022..0.022 rows=0 loops=1) Index Cond: ((email)::text = 'a'::text) Buffers: shared hit=3 Planning time: 3.912 ms Execution time: 42.171 ms With the changes in this commit we now produce the following plan instead: Limit (cost=13257.48..13257.53 rows=20 width=805) (actual time=1.567..1.579 rows=20 loops=1) Buffers: shared hit=287 -> Sort (cost=13257.48..13280.93 rows=9379 width=805) (actual time=1.567..1.572 rows=20 loops=1) Sort Key: (CASE WHEN ((name)::text = 'a'::text) THEN 0 WHEN ((username)::text = 'a'::text) THEN 1 WHEN ((email)::text = 'a'::text) THEN 2 ELSE 3 END), name Sort Method: top-N heapsort Memory: 35kB Buffers: shared hit=287 -> Bitmap Heap Scan on users (cost=135.66..13007.91 rows=9379 width=805) (actual time=0.194..1.107 rows=277 loops=1) Recheck Cond: ((lower((name)::text) = 'a'::text) OR (lower((username)::text) = 'a'::text) OR ((email)::text = 'a'::text)) Heap Blocks: exact=277 Buffers: shared hit=287 -> BitmapOr (cost=135.66..135.66 rows=9379 width=0) (actual time=0.152..0.152 rows=0 loops=1) Buffers: shared hit=10 -> Bitmap Index Scan on yorick_test_users (cost=0.00..124.75 rows=9377 width=0) (actual time=0.101..0.101 rows=277 loops=1) Index Cond: (lower((name)::text) = 'a'::text) Buffers: shared hit=4 -> Bitmap Index Scan on index_on_users_lower_username (cost=0.00..1.94 rows=1 width=0) (actual time=0.035..0.035 rows=1 loops=1) Index Cond: (lower((username)::text) = 'a'::text) Buffers: shared hit=3 -> Bitmap Index Scan on users_email_key (cost=0.00..1.94 rows=1 width=0) (actual time=0.014..0.014 rows=0 loops=1) Index Cond: ((email)::text = 'a'::text) Buffers: shared hit=3 Planning time: 0.303 ms Execution time: 1.687 ms Here we can see the new query is 25 times faster compared to the old query.
-
Yorick Peterse authored
The frontend code doesn't use this so there's no practical point in supporting this. We also hardcode the limit to 20 so users can no longer request their own limit, which could overload the database (depending on any upper bounds perhaps enforced by Kaminari).
-
Yorick Peterse authored
We can instead just use a UNION. This removes the need for plucking hundreds if not thousands of IDs into memory when a project has many members.
-