-
Notifications
You must be signed in to change notification settings - Fork 176
Fix asc/desc keyword behavior for sort command #4651
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Signed-off-by: Ritvi Bhatt <[email protected]>
Signed-off-by: Ritvi Bhatt <[email protected]>
Signed-off-by: Ritvi Bhatt <[email protected]>
Signed-off-by: Ritvi Bhatt <[email protected]>
Signed-off-by: Ritvi Bhatt <[email protected]>
Signed-off-by: Ritvi Bhatt <[email protected]>
|
|
||
| sortField | ||
| : (PLUS | MINUS)? sortFieldExpression | ||
| : (PLUS | MINUS) sortFieldExpression (ASC | A | DESC | D) # invalidMixedSortField |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we need to define invalid syntax? wouldn't it fail parse without this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would fail the parse but added this to have a more clear error for when the two syntaxes are mixed
| * [asc|a|desc|d] (Since 3.3): optional. asc/a keeps the sort order as specified. desc/d reverses the sort results. If multiple fields are specified with desc/d, reverses order of the first field then for all duplicate values of the first field, reverses the order of the values of the second field and so on. **Default:** asc. | ||
|
|
||
| .. note:: | ||
| You cannot mix +/- and asc/desc in the same sort command. Choose one approach for all fields in a single sort command. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we need to prohibit this? Any concern to allow the mixture?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added because the syntax gets confusing if there's a lot of mixing of the 2 different syntaxes
|
|
||
| UnresolvedExpression fieldExpression = | ||
| visit(ctx.sortFieldExpression().fieldExpression().qualifiedName()); | ||
| private Field buildSortField( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is not critical, but please improve if you have capacity.
Following logics looks weird to me since visitPrefixSortField / visitSuffixSortField / visitDefaultSortField already know their type, but come to the same place and branch based on the context class.
I don't have clear idea to improve it, but I think there are better way to organize the code.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah it is a bit confusing, I can take this up as a task in a follow up PR to improve the logic here
Description
Fixed PPL sort command so that asc/desc keywords specify sort direction for individual fields instead of applying all fields in the sort command. (keywords work on individual fields ex
sort field1 asc, field2 descmeans field1 is ascending and field2 is descending) while preventing mixing of prefix (+/-) and suffix (asc/desc) syntax, and updated integration tests to match this behavior.Files Changed
Related Issues
Resolves #[Issue number to be closed when this PR is merged]
Check List
--signoffor-s.By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.