Fix JPQL long literal parsing.
Closes #3308 Original pull request: #3280
This commit is contained in:
committed by
Mark Paluch
parent
5309fa551c
commit
1610f6b871
@@ -23,6 +23,7 @@ grammar Jpql;
|
||||
*
|
||||
* @see https://github.com/jakartaee/persistence/blob/master/spec/src/main/asciidoc/ch04-query-language.adoc#bnf
|
||||
* @author Greg Turnquist
|
||||
* @author Christoph Strobl
|
||||
* @since 3.1
|
||||
*/
|
||||
}
|
||||
@@ -621,6 +622,7 @@ literal
|
||||
: STRINGLITERAL
|
||||
| INTLITERAL
|
||||
| FLOATLITERAL
|
||||
| LONGLITERAL
|
||||
| boolean_literal
|
||||
| entity_type_literal
|
||||
;
|
||||
@@ -650,6 +652,7 @@ escape_character
|
||||
numeric_literal
|
||||
: INTLITERAL
|
||||
| FLOATLITERAL
|
||||
| LONGLITERAL
|
||||
;
|
||||
|
||||
boolean_literal
|
||||
@@ -855,3 +858,4 @@ IDENTIFICATION_VARIABLE : ('a' .. 'z' | 'A' .. 'Z' | '\u0080' .. '\ufffe' |
|
||||
STRINGLITERAL : '\'' (~ ('\'' | '\\'))* '\'' ;
|
||||
FLOATLITERAL : ('0' .. '9')* '.' ('0' .. '9')+ (E '0' .. '9')* ;
|
||||
INTLITERAL : ('0' .. '9')+ ;
|
||||
LONGLITERAL : ('0' .. '9')+L ;
|
||||
|
||||
@@ -24,6 +24,7 @@ import java.util.List;
|
||||
* An ANTLR {@link org.antlr.v4.runtime.tree.ParseTreeVisitor} that renders a JPQL query without making any changes.
|
||||
*
|
||||
* @author Greg Turnquist
|
||||
* @author Christoph Strobl
|
||||
* @since 3.1
|
||||
*/
|
||||
class JpqlQueryRenderer extends JpqlBaseVisitor<List<JpaQueryParsingToken>> {
|
||||
@@ -2155,6 +2156,8 @@ class JpqlQueryRenderer extends JpqlBaseVisitor<List<JpaQueryParsingToken>> {
|
||||
tokens.add(new JpaQueryParsingToken(ctx.INTLITERAL()));
|
||||
} else if (ctx.FLOATLITERAL() != null) {
|
||||
tokens.add(new JpaQueryParsingToken(ctx.FLOATLITERAL()));
|
||||
} else if(ctx.LONGLITERAL() != null) {
|
||||
tokens.add(new JpaQueryParsingToken(ctx.LONGLITERAL()));
|
||||
} else if (ctx.boolean_literal() != null) {
|
||||
tokens.addAll(visit(ctx.boolean_literal()));
|
||||
} else if (ctx.entity_type_literal() != null) {
|
||||
@@ -2215,6 +2218,8 @@ class JpqlQueryRenderer extends JpqlBaseVisitor<List<JpaQueryParsingToken>> {
|
||||
return List.of(new JpaQueryParsingToken(ctx.INTLITERAL()));
|
||||
} else if (ctx.FLOATLITERAL() != null) {
|
||||
return List.of(new JpaQueryParsingToken(ctx.FLOATLITERAL()));
|
||||
} else if(ctx.LONGLITERAL() != null) {
|
||||
return List.of(new JpaQueryParsingToken(ctx.LONGLITERAL()));
|
||||
} else {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ import org.springframework.data.domain.Sort;
|
||||
* @author Mark Paluch
|
||||
* @author Diego Krupitza
|
||||
* @author Geoffrey Deremetz
|
||||
* @author Christoph Strobl
|
||||
*/
|
||||
public class JSqlParserQueryEnhancerUnitTests extends QueryEnhancerTckTests {
|
||||
|
||||
@@ -49,6 +50,8 @@ public class JSqlParserQueryEnhancerUnitTests extends QueryEnhancerTckTests {
|
||||
|
||||
assumeThat(query).as("JSQLParser does not support constructor JPQL syntax").doesNotContain(" new ");
|
||||
|
||||
assumeThat(query).as("JSQLParser does not support MOD JPQL syntax").doesNotContain("MOD(");
|
||||
|
||||
super.shouldDeriveJpqlCountQuery(query, expected);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user