Skip to content

[Rails5] Fix milestone GROUP BY query

What does this MR do?

Currently for MySQL we group results by project_id which gives rows with filtered project_id field by uniqueness.

But since Rails 5.0 now that query doesn't work anymore because by default Rails runs with sql_mode set to only_full_group_by.

That mode requires adding all the selected fields to be also passed to the group_by clause:

group(:project_id, :due_date, :id)

Adding all those fields causes to a non-unique result. Now we can have multiple rows with the same project_id.

This MR adds a dirty hack: load all non-unique records and sort them out in memory which is non performance-wise at all.

It should be rewritten to use a proper SQL query to let MySQL select needed rows on its end.

Are there points in the code the reviewer needs to double check?

Yes. Is there any SQL query to query only needed unique rows on the database end?

Why was this MR needed?

Migration to Rails 5.0.

Screenshots (if relevant)

No.

Does this MR meet the acceptance criteria?

What are the relevant issue numbers?

Closes #48428 (closed)

Edited by Yorick Peterse

Merge request reports