summaryrefslogtreecommitdiff
path: root/lib/gitlab/multi_collection_paginator.rb
diff options
context:
space:
mode:
authorBob Van Landuyt <bob@vanlanduyt.co>2017-11-17 15:55:43 +0100
committerBob Van Landuyt <bob@vanlanduyt.co>2017-11-17 16:20:47 +0100
commit5a335c4d955bbb74a50ca30ac45d30f6ef66774d (patch)
tree490aae02c5cb2a2d1774c8b7094e9c7bc4c2c3a8 /lib/gitlab/multi_collection_paginator.rb
parent4aa18590b3af27c9cb3cd3c2fc8c0a70e9a8758e (diff)
downloadgitlab-ce-5a335c4d955bbb74a50ca30ac45d30f6ef66774d.tar.gz
Remove the selects when counting the last page
The last page of the first collection is only loaded into memory when it is being viewed. If it isn't loaded into memory, the `#size` call triggers a count query. This `#count` would generate an invalid query if our custom preloaded counts are included by adding a separate `as count_column` alias on top of the count aliases. Removing the selects in this case will make sure a valid `COUNT(*)` is generated.
Diffstat (limited to 'lib/gitlab/multi_collection_paginator.rb')
-rw-r--r--lib/gitlab/multi_collection_paginator.rb4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/gitlab/multi_collection_paginator.rb b/lib/gitlab/multi_collection_paginator.rb
index eb3c9002710..c22d0a84860 100644
--- a/lib/gitlab/multi_collection_paginator.rb
+++ b/lib/gitlab/multi_collection_paginator.rb
@@ -55,7 +55,9 @@ module Gitlab
def first_collection_last_page_size
return @first_collection_last_page_size if defined?(@first_collection_last_page_size)
- @first_collection_last_page_size = paginated_first_collection(first_collection_page_count).count
+ @first_collection_last_page_size = paginated_first_collection(first_collection_page_count)
+ .except(:select)
+ .size
end
end
end