-
Notifications
You must be signed in to change notification settings - Fork 33
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
#963 Deprecate Unimplemented PPL Sort Syntax #994
base: main
Are you sure you want to change the base?
Changes from 4 commits
46b0f95
db59830
a5f35bc
cec3f39
953a1fc
9a76e17
3639399
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -68,6 +68,8 @@ PPL query: | |
| 880 | Holmes Lane | | ||
+----------------+----------------+ | ||
|
||
**Note**: The `sort num` syntax is deprecated. To sort numerically, cast to a numerical data type - e.g. `sort cast(streetNumber as integer)`. See [#963](https://github.com/opensearch-project/opensearch-spark/issues/963) for more details. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. can you update the example above to use the cast syntax instead? |
||
|
||
### Limitations | ||
|
||
There are a few limitations with parse command: | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -520,6 +520,8 @@ sortField | |
|
||
sortFieldExpression | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @currantw if i understand correctly - we remove the cast capability in the sort statement in favour of using the
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Based on the discussion on the corresponding SQL issue, it seems like the consensus is to just mark as deprecated right now. I've updated this PR as suggested, so I think this comment is resolved for the time being. I've added a comment on the issue above with some example of equivalent |
||
: fieldExpression | ||
|
||
// TODO #963: Remove unimplemented sort syntax | ||
| AUTO LT_PRTHS fieldExpression RT_PRTHS | ||
| STR LT_PRTHS fieldExpression RT_PRTHS | ||
| IP LT_PRTHS fieldExpression RT_PRTHS | ||
|
@@ -1095,10 +1097,6 @@ keywordsCanBeId | |
| INDEX | ||
| DESC | ||
| DATASOURCES | ||
| AUTO | ||
| STR | ||
| IP | ||
| NUM | ||
| FROM | ||
| PATTERN | ||
| NEW_FIELD | ||
|
@@ -1181,4 +1179,10 @@ keywordsCanBeId | |
| BETWEEN | ||
| CIDRMATCH | ||
| trendlineType | ||
// SORT FIELD KEYWORDS | ||
// TODO #963: Remove unimplemented sort syntax | ||
| AUTO | ||
| STR | ||
| IP | ||
| NUM | ||
; |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -45,8 +45,6 @@ | |
import org.opensearch.sql.ast.expression.subquery.ExistsSubquery; | ||
import org.opensearch.sql.ast.expression.subquery.InSubquery; | ||
import org.opensearch.sql.ast.expression.subquery.ScalarSubquery; | ||
import org.opensearch.sql.ast.tree.Trendline; | ||
import org.opensearch.sql.common.antlr.SyntaxCheckException; | ||
import org.opensearch.sql.common.utils.StringUtils; | ||
import org.opensearch.sql.ppl.utils.ArgumentFactory; | ||
|
||
|
@@ -58,7 +56,6 @@ | |
import java.util.stream.IntStream; | ||
import java.util.stream.Stream; | ||
|
||
import static org.opensearch.sql.expression.function.BuiltinFunctionName.EQUAL; | ||
import static org.opensearch.sql.expression.function.BuiltinFunctionName.IS_NOT_NULL; | ||
import static org.opensearch.sql.expression.function.BuiltinFunctionName.IS_NULL; | ||
import static org.opensearch.sql.expression.function.BuiltinFunctionName.LENGTH; | ||
|
@@ -80,7 +77,7 @@ public class AstExpressionBuilder extends OpenSearchPPLParserBaseVisitor<Unresol | |
.put("isnotnull", IS_NOT_NULL.getName().getFunctionName()) | ||
.put("ispresent", IS_NOT_NULL.getName().getFunctionName()) | ||
.build(); | ||
private AstBuilder astBuilder; | ||
private final AstBuilder astBuilder; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. changes in this file seem like merge conflicts? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @currantw I agree with @acarbonetto - can we only keep changes relevant for this PR ? |
||
|
||
public AstExpressionBuilder(AstBuilder astBuilder) { | ||
this.astBuilder = astBuilder; | ||
|
@@ -183,6 +180,8 @@ public UnresolvedExpression visitWcFieldExpression(OpenSearchPPLParser.WcFieldEx | |
|
||
@Override | ||
public UnresolvedExpression visitSortField(OpenSearchPPLParser.SortFieldContext ctx) { | ||
|
||
// TODO #963: Remove unimplemented sort syntax | ||
return new Field((QualifiedName) | ||
visit(ctx.sortFieldExpression().fieldExpression().qualifiedName()), | ||
ArgumentFactory.getArgumentList(ctx)); | ||
|
@@ -263,7 +262,6 @@ public UnresolvedExpression visitCaseExpr(OpenSearchPPLParser.CaseExprContext ct | |
public UnresolvedExpression visitIsEmptyExpression(OpenSearchPPLParser.IsEmptyExpressionContext ctx) { | ||
Function trimFunction = new Function(TRIM.getName().getFunctionName(), Collections.singletonList(this.visitFunctionArg(ctx.functionArg()))); | ||
Function lengthFunction = new Function(LENGTH.getName().getFunctionName(), Collections.singletonList(trimFunction)); | ||
Compare lengthEqualsZero = new Compare(EQUAL.getName().getFunctionName(), lengthFunction, new Literal(0, DataType.INTEGER)); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why was this removed ? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Unused variable. |
||
Literal whenCompareValue = new Literal(0, DataType.INTEGER); | ||
Literal isEmptyFalse = new Literal(false, DataType.BOOLEAN); | ||
Literal isEmptyTrue = new Literal(true, DataType.BOOLEAN); | ||
|
@@ -452,12 +450,10 @@ public UnresolvedExpression visitLambda(OpenSearchPPLParser.LambdaContext ctx) { | |
|
||
private List<UnresolvedExpression> timestampFunctionArguments( | ||
OpenSearchPPLParser.TimestampFunctionCallContext ctx) { | ||
List<UnresolvedExpression> args = | ||
Arrays.asList( | ||
return Arrays.asList( | ||
new Literal(ctx.timestampFunction().simpleDateTimePart().getText(), DataType.STRING), | ||
visitFunctionArg(ctx.timestampFunction().firstArg), | ||
visitFunctionArg(ctx.timestampFunction().secondArg)); | ||
return args; | ||
} | ||
|
||
private QualifiedName visitIdentifiers(List<? extends ParserRuleContext> ctx) { | ||
|
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.
can you update the example above to use the cast syntax instead?