On mysql, compare CONCAT'd values rather than tuple of values #14
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When ordering by two or more fields as well as supplying a
cursor
argument to theCurorPaginator.page
function, the ORM will generate a query something along the lines of thisOn mysql this breaks at the
AS '_cursor'
part -OperationalError: (1241, 'Operand should contain 1 column(s)')
.It seems mysql doesn't allow you to select a tuple. To get around this, I'm concatenating the values instead.
With this change, the query generated looks more like this (
as_mysql
logic was taken from here)From my limited testing, this does seem to work (I'm using django 1.9.13), but I'm not 100% certain of the performance impact or potential comparison differences of using
concat
rather than comparing tuples.