Open swwu opened 1 month ago
in the past, the consolidator needs the query results to be ordered. this constrait was dropped in https://github.com/SeaQL/sea-orm/pull/1743 but the behaviour has not changed. removing the default order by is a break I want to avoid, but I agree users should be given the preference if they want to override the ordering
That makes sense. I think just calling attention in documentation to the fact that find_with_related
introduces an ordering would be valuable for now, since the current behavior is very surprising.
The workaround I noted (placing the order_by
calls before find_by_related
) isn't terrible or anything—it's just not very intuitive—so maybe even a small note explaining it as an option would probably cover most ordering use cases for the time being.
I totally agree with you, would appreciate if you can make a PR on any of the points above
Description
find_with_related
implicitly adds anorder by
on the left table's id. This is extremely unintuitive; for instance:generates a query that is ordered by
(LeftId, LeftCol1, LeftCol2)
rather than(LeftCol1, LeftCol2)
, as might be expected.Steps to Reproduce
find_with_related
that includes anorder_by
after thefind_with_related
.build(..).to_string()
itorder by left.id asc
prepended to itExpected Behavior
In the example case from the description, I would expect the ordering to be
(LeftCol1, LeftCol2)
.Actual Behavior
In the example case from the description, the actual ordering is
(LeftId, LeftCol1, LeftCol2)
.Reproduces How Often
Deterministically.
Workarounds
Placing the
order_by
before thefind_with_related
, like so:produces an ordering on
(LeftCol1, LeftCol2, LeftId)
, which is acceptable. However, the fact that the query needs to be constructed in this manner is very non-obvious.Reproducible Example
See description
Versions