Browse Source

Refine HQL rendering of CTE with SEARCH clause.

Add tests for CYCLE, ensure no space between search order items.

Closes #4012
pull/4022/head
Mark Paluch 5 months ago
parent
commit
18db5faf26
No known key found for this signature in database
GPG Key ID: 55BC6374BAA9D973
  1. 5
      spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/HqlQueryRenderer.java
  2. 25
      spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/HqlQueryRendererTests.java

5
spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/HqlQueryRenderer.java

@ -131,6 +131,11 @@ class HqlQueryRenderer extends HqlBaseVisitor<QueryTokenStream> { @@ -131,6 +131,11 @@ class HqlQueryRenderer extends HqlBaseVisitor<QueryTokenStream> {
return QueryTokenStream.concat(ctx.identifier(), this::visit, TOKEN_COMMA);
}
@Override
public QueryTokenStream visitSearchSpecifications(HqlParser.SearchSpecificationsContext ctx) {
return QueryTokenStream.concat(ctx.searchSpecification(), this::visit, TOKEN_COMMA);
}
@Override
public QueryTokenStream visitOrderedQuery(HqlParser.OrderedQueryContext ctx) {

25
spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/HqlQueryRendererTests.java

@ -2097,6 +2097,31 @@ class HqlQueryRendererTests { @@ -2097,6 +2097,31 @@ class HqlQueryRendererTests {
""");
}
@Test // GH-4012
void cteWithSearch() {
assertQuery("""
WITH Tree AS (SELECT o.uuid AS test_uuid FROM DemoEntity o)
SEARCH BREADTH FIRST BY foo ASC NULLS FIRST, bar DESC NULLS LAST SET baz
SELECT test_uuid FROM Tree
""");
}
@Test // GH-4012
void cteWithCycle() {
assertQuery("""
WITH Tree AS (SELECT o.uuid AS test_uuid FROM DemoEntity o) CYCLE test_uuid SET circular TO true DEFAULT false
SELECT test_uuid FROM Tree
""");
assertQuery(
"""
WITH Tree AS (SELECT o.uuid AS test_uuid FROM DemoEntity o) CYCLE test_uuid SET circular TO true DEFAULT false USING bar
SELECT test_uuid FROM Tree
""");
}
@Test // GH-2982
void floorShouldBeValidEntityName() {

Loading…
Cancel
Save