-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Closed
Labels
type: regressionA regression from a previous releaseA regression from a previous release
Milestone
Description
We are having issues with this query with the latest update to 2024.1.9 Spring Data. This is with EclipseLink.
SELECT MAX(MOD(e.salary, 10)), e.address.city FROM Employee e GROUP BY e.address.city
The exception call stack when running in the test suite of spring-data-jpa is
org.springframework.data.jpa.repository.query.BadJpqlGrammarException: At 1:11 and token 'MOD', no viable alternative at input 'SELECT MAX(*MOD(e.salary, 10)), e.address.city FROM Employee e GROUP BY e.address.city'; Bad EQL grammar [SELECT MAX(MOD(e.salary, 10)), e.address.city FROM Employee e GROUP BY e.address.city]
at org.springframework.data.jpa.repository.query.BadJpqlGrammarErrorListener.syntaxError(BadJpqlGrammarErrorListener.java:53)
at org.antlr.v4.runtime.ProxyErrorListener.syntaxError(ProxyErrorListener.java:41)
at org.antlr.v4.runtime.Parser.notifyErrorListeners(Parser.java:544)
at org.antlr.v4.runtime.DefaultErrorStrategy.reportNoViableAlternative(DefaultErrorStrategy.java:310)
at org.antlr.v4.runtime.DefaultErrorStrategy.reportError(DefaultErrorStrategy.java:136)
at org.springframework.data.jpa.repository.query.EqlParser.select_expression(EqlParser.java:3215)
at org.springframework.data.jpa.repository.query.EqlParser.select_item(EqlParser.java:3085)
at org.springframework.data.jpa.repository.query.EqlParser.select_clause(EqlParser.java:3020)
at org.springframework.data.jpa.repository.query.EqlParser.select_statement(EqlParser.java:460)
at org.springframework.data.jpa.repository.query.EqlParser.ql_statement(EqlParser.java:329)
at org.springframework.data.jpa.repository.query.EqlParser.start(EqlParser.java:271)
at org.springframework.data.jpa.repository.query.JpaQueryEnhancer.parse(JpaQueryEnhancer.java:101)
at org.springframework.data.jpa.repository.query.JpaQueryEnhancer$EqlQueryParser.<init>(JpaQueryEnhancer.java:291)
at org.springframework.data.jpa.repository.query.JpaQueryEnhancer$EqlQueryParser.parseQuery(JpaQueryEnhancer.java:303)
at org.springframework.data.jpa.repository.query.EqlQueryRendererTests.parseWithoutChanges(EqlQueryRendererTests.java:50)
at org.springframework.data.jpa.repository.query.EqlQueryRendererTests.assertQuery(EqlQueryRendererTests.java:62)
at org.springframework.data.jpa.repository.query.EqlQueryRendererTests.groupByClause(EqlQueryRendererTests.java:165)
This was tested with this patch:
diff --git a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/EqlQueryRendererTests.java b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/EqlQueryRendererTests.java
index a98a01adc..e30450271 100644
--- a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/EqlQueryRendererTests.java
+++ b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/EqlQueryRendererTests.java
@@ -162,6 +162,7 @@ class EqlQueryRendererTests {
void groupByClause() {
assertQuery("SELECT AVG(e.salary), e.address.city FROM Employee e GROUP BY e.address.city");
+ assertQuery("SELECT MAX(MOD(e.salary, 10)), e.address.city FROM Employee e GROUP BY e.address.city");
assertQuery("SELECT e, COUNT(p) FROM Employee e LEFT JOIN e.projects p GROUP BY e");
}
Metadata
Metadata
Assignees
Labels
type: regressionA regression from a previous releaseA regression from a previous release