[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?
Screenshots (if relevant)
No.
Does this MR meet the acceptance criteria?
-
Changelog entry added, if necessary -
Documentation created/updated -
API support added -
Tests added for this feature/bug - Conform by the code review guidelines
-
Has been reviewed by a UX Designer -
Has been reviewed by a Frontend maintainer -
Has been reviewed by a Backend maintainer -
Has been reviewed by a Database specialist
-
-
Conform by the merge request performance guides -
Conform by the style guides -
If you have multiple commits, please combine them into a few logically organized commits by squashing them -
Internationalization required/considered -
End-to-end tests pass ( package-and-qa
manual pipeline job)
What are the relevant issue numbers?
Closes #48428 (closed)