Fix EQL grammar to accept literals in constructor expressions.
Original Pull Request: #3695
This commit is contained in:
@@ -215,6 +215,7 @@ constructor_item
|
||||
| scalar_expression
|
||||
| aggregate_expression
|
||||
| identification_variable
|
||||
| literal
|
||||
;
|
||||
|
||||
aggregate_expression
|
||||
|
||||
@@ -696,19 +696,19 @@ class EqlQueryRenderer extends EqlBaseVisitor<QueryTokenStream> {
|
||||
@Override
|
||||
public QueryTokenStream visitConstructor_item(EqlParser.Constructor_itemContext ctx) {
|
||||
|
||||
QueryRendererBuilder builder = QueryRenderer.builder();
|
||||
|
||||
if (ctx.single_valued_path_expression() != null) {
|
||||
builder.append(visit(ctx.single_valued_path_expression()));
|
||||
return visit(ctx.single_valued_path_expression());
|
||||
} else if (ctx.scalar_expression() != null) {
|
||||
builder.append(visit(ctx.scalar_expression()));
|
||||
return visit(ctx.scalar_expression());
|
||||
} else if (ctx.aggregate_expression() != null) {
|
||||
builder.append(visit(ctx.aggregate_expression()));
|
||||
return visit(ctx.aggregate_expression());
|
||||
} else if (ctx.identification_variable() != null) {
|
||||
builder.append(visit(ctx.identification_variable()));
|
||||
return visit(ctx.identification_variable());
|
||||
} else if (ctx.literal() != null) {
|
||||
return visit(ctx.literal());
|
||||
}
|
||||
|
||||
return builder;
|
||||
return QueryTokenStream.empty();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1302,7 +1302,7 @@ class HqlQueryRenderer extends HqlBaseVisitor<QueryTokenStream> {
|
||||
|
||||
@Override
|
||||
public QueryTokenStream visitGenericTemporalLiteralText(HqlParser.GenericTemporalLiteralTextContext ctx) {
|
||||
return QueryRendererBuilder.from(QueryTokens.token(ctx.STRING_LITERAL()));
|
||||
return QueryTokenStream.ofToken(ctx.STRING_LITERAL());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1331,12 +1331,12 @@ class HqlQueryRenderer extends HqlBaseVisitor<QueryTokenStream> {
|
||||
|
||||
@Override
|
||||
public QueryTokenStream visitGeneralizedLiteralType(HqlParser.GeneralizedLiteralTypeContext ctx) {
|
||||
return QueryRendererBuilder.from(QueryTokens.token(ctx.STRING_LITERAL()));
|
||||
return QueryTokenStream.ofToken(ctx.STRING_LITERAL());
|
||||
}
|
||||
|
||||
@Override
|
||||
public QueryTokenStream visitGeneralizedLiteralText(HqlParser.GeneralizedLiteralTextContext ctx) {
|
||||
return QueryRendererBuilder.from(QueryTokens.token(ctx.STRING_LITERAL()));
|
||||
return QueryTokenStream.ofToken(ctx.STRING_LITERAL());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1407,37 +1407,37 @@ class HqlQueryRenderer extends HqlBaseVisitor<QueryTokenStream> {
|
||||
|
||||
@Override
|
||||
public QueryTokenStream visitYear(HqlParser.YearContext ctx) {
|
||||
return QueryRendererBuilder.from(QueryTokens.token(ctx.INTEGER_LITERAL()));
|
||||
return QueryTokenStream.ofToken(ctx.INTEGER_LITERAL());
|
||||
}
|
||||
|
||||
@Override
|
||||
public QueryTokenStream visitMonth(HqlParser.MonthContext ctx) {
|
||||
return QueryRendererBuilder.from(QueryTokens.token(ctx.INTEGER_LITERAL()));
|
||||
return QueryTokenStream.ofToken(ctx.INTEGER_LITERAL());
|
||||
}
|
||||
|
||||
@Override
|
||||
public QueryTokenStream visitDay(HqlParser.DayContext ctx) {
|
||||
return QueryRendererBuilder.from(QueryTokens.token(ctx.INTEGER_LITERAL()));
|
||||
return QueryTokenStream.ofToken(ctx.INTEGER_LITERAL());
|
||||
}
|
||||
|
||||
@Override
|
||||
public QueryTokenStream visitHour(HqlParser.HourContext ctx) {
|
||||
return QueryRendererBuilder.from(QueryTokens.token(ctx.INTEGER_LITERAL()));
|
||||
return QueryTokenStream.ofToken(ctx.INTEGER_LITERAL());
|
||||
}
|
||||
|
||||
@Override
|
||||
public QueryTokenStream visitMinute(HqlParser.MinuteContext ctx) {
|
||||
return QueryRendererBuilder.from(QueryTokens.token(ctx.INTEGER_LITERAL()));
|
||||
return QueryTokenStream.ofToken(ctx.INTEGER_LITERAL());
|
||||
}
|
||||
|
||||
@Override
|
||||
public QueryTokenStream visitSecond(HqlParser.SecondContext ctx) {
|
||||
return QueryRendererBuilder.from(QueryTokens.token(ctx.INTEGER_LITERAL()));
|
||||
return QueryTokenStream.ofToken(ctx.INTEGER_LITERAL());
|
||||
}
|
||||
|
||||
@Override
|
||||
public QueryTokenStream visitZoneId(HqlParser.ZoneIdContext ctx) {
|
||||
return QueryRendererBuilder.from(QueryTokens.token(ctx.STRING_LITERAL()));
|
||||
return QueryTokenStream.ofToken(ctx.STRING_LITERAL());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -129,6 +129,11 @@ class EqlComplianceTests {
|
||||
assertQuery("SELECT s FROM Stat s WHERE s.ratio > 3.14e32D");
|
||||
}
|
||||
|
||||
@Test // GH-3308
|
||||
void newWithStrings() {
|
||||
assertQuery("select new com.example.demo.SampleObject(se.id, se.sampleValue, \"java\") from SampleEntity se");
|
||||
}
|
||||
|
||||
@Test
|
||||
void orderByClause() {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user