Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Brandl <abrandl@gitlab.com>2019-07-24 16:59:55 +0300
committerAndreas Brandl <abrandl@gitlab.com>2019-07-29 13:47:06 +0300
commit988dc80585c6e52970e94f22dff6bc1e4c786e9e (patch)
treefa46a90181e23ec86c5e25288e5b83451ce5b27f /app/finders/members_finder.rb
parentca05130319ae9d74ee7771b5a8adb6cf25857fb7 (diff)
Further remove code branches by database type
We dropped MySQL support and a lot of mysql specific code has been removed in https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/29608. This comes in from the other direction and removes any `if postgresql?` branches.
Diffstat (limited to 'app/finders/members_finder.rb')
-rw-r--r--app/finders/members_finder.rb41
1 files changed, 11 insertions, 30 deletions
diff --git a/app/finders/members_finder.rb b/app/finders/members_finder.rb
index 917de249104..f730b015c0a 100644
--- a/app/finders/members_finder.rb
+++ b/app/finders/members_finder.rb
@@ -59,35 +59,16 @@ class MembersFinder
def distinct_on(union)
# We're interested in a list of members without duplicates by user_id.
# We prefer project members over group members, project members should go first.
- if Gitlab::Database.postgresql?
- <<~SQL
- SELECT DISTINCT ON (user_id, invite_email) member_union.*
- FROM (#{union.to_sql}) AS member_union
- ORDER BY user_id,
- invite_email,
- CASE
- WHEN type = 'ProjectMember' THEN 1
- WHEN type = 'GroupMember' THEN 2
- ELSE 3
- END
- SQL
- else
- # Older versions of MySQL do not support window functions (and DISTINCT ON is postgres-specific).
- <<~SQL
- SELECT t1.*
- FROM (#{union.to_sql}) AS t1
- JOIN (
- SELECT
- COALESCE(user_id, -1) AS user_id,
- COALESCE(invite_email, 'NULL') AS invite_email,
- MIN(CASE WHEN type = 'ProjectMember' THEN 1 WHEN type = 'GroupMember' THEN 2 ELSE 3 END) AS type_number
- FROM
- (#{union.to_sql}) AS t3
- GROUP BY COALESCE(user_id, -1), COALESCE(invite_email, 'NULL')
- ) AS t2 ON COALESCE(t1.user_id, -1) = t2.user_id
- AND COALESCE(t1.invite_email, 'NULL') = t2.invite_email
- AND CASE WHEN t1.type = 'ProjectMember' THEN 1 WHEN t1.type = 'GroupMember' THEN 2 ELSE 3 END = t2.type_number
- SQL
- end
+ <<~SQL
+ SELECT DISTINCT ON (user_id, invite_email) member_union.*
+ FROM (#{union.to_sql}) AS member_union
+ ORDER BY user_id,
+ invite_email,
+ CASE
+ WHEN type = 'ProjectMember' THEN 1
+ WHEN type = 'GroupMember' THEN 2
+ ELSE 3
+ END
+ SQL
end
end