Replace .having with .where in calendar query
the current syntax doesn't work properly in Rails 5, the resulting query looks like: HAVING "events"."project_id" IN (0) instead of: HAVING "events"."project_id" IN (SELECT "projects"."id" FROM... Also we should not use ActiveRecord internal methods. In this case we can filter projects in WHERE clause instead of doing this in HAVING clause. Usage of WHERE should be also more efficient because grouping is then done on much smaller subset of records.
This commit is contained in:
parent
5b1416aa74
commit
7b7b249ef4
1 changed files with 1 additions and 1 deletions
|
@ -85,7 +85,7 @@ module Gitlab
|
|||
.select(t[:project_id], t[:target_type], t[:action], "date(created_at + #{date_interval}) AS date", 'count(id) as total_amount')
|
||||
.group(t[:project_id], t[:target_type], t[:action], "date(created_at + #{date_interval})")
|
||||
.where(conditions)
|
||||
.having(t[:project_id].in(Arel::Nodes::SqlLiteral.new(authed_projects.to_sql)))
|
||||
.where("events.project_id in (#{authed_projects.to_sql})") # rubocop:disable GitlabSecurity/SqlInjection
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue