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.
1) allow mixing
orderBy
andseek
.2) snapshot tests for generated sql in tests
3) Revamp SQL generation
The previous method for SQL generation was not powerful enough
Create scopes for all levels
The previous method failed to create "scopes" for all joins, which meant that predicates, sorting, limits and so on wouldn't apply where usage of the DSL indicated they would.
Now we create these scopes with CTEs at all levels of the query.
CTEs should be fine, performance-wise, as they were fixed for PG12
Better compositionality
The previous method failed when performing (joined query).join(joined query), it only worked with relations on the left side. This is also fixed
Refactoring
The old SQL generation code was neither understandable nor correct. Now I hope it's both
An example of SQL before and after:
before:
after:
4) Add
count
to DSL