feat(sql-utilities,query-engine): add SQL ORDER BY and LIMIT support#364
Merged
milindsrivastava1997 merged 4 commits intoMay 25, 2026
Merged
Conversation
…th_post_processing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Add parser and post-processing support for SQL
ORDER BYandLIMITon supported grouped aggregate queries.Queries such as:
now parse and execute successfully where they previously fell through to:
Changes
Capture:
ORDER BYitemsLIMIT Nduring SQL parsing and store them on
SQLQueryData.Apply sorting and truncation after
execute_query_pipeline()returns.Add a new
SqlPostProcessingside-channel returned frombuild_sql_query_pieces()alongsideQueryExecutionContext:matches_sql_pattern()now ignores:ORDER BYLIMITso existing registered templates continue matching queries that add presentation-only clauses.
SqlPostProcessing::apply()short-circuits when no ordering or limit is present, making the fast path effectively zero-cost.Validation Rules
ORDER BYitems must reference either:GROUP BYcolumnUnknown identifiers are rejected at parse time to avoid silently returning unsorted results for typo'd columns.
Supported
ORDER BYASC/DESCGROUP BYcolumnsLIMIT NStill Unsupported
The following remain rejected:
ORDER BYORDER BYOFFSETLIMIT BYLIMIT a, bWITH FILLNULLS FIRST/LASTORDER BY ALLTests Added
Added 16 tests covering:
aggregate alias ordering with
LIMITdefault ascending order
multi-column mixed directions
ordering by group-by keys
limit-only queries
tie-breaking behavior
NaN handling
matches_sql_pattern()compatibilityno-op fast path
end-to-end
SqlPostProcessing::applyrejection of:
OFFSET