Skip to content

Commit feb8071

Browse files
committed
Polishing.
Remove unused code, add missing annotation. See #4272 Original pull request: #4273
1 parent cbb3dbc commit feb8071

10 files changed

Lines changed: 35 additions & 34 deletions

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,10 @@ public QueryTokenStream visitSelect_clause(EqlParser.Select_clauseContext ctx) {
7777
if (usesDistinct) {
7878
nested.append(QueryTokens.expression(ctx.DISTINCT()));
7979
nested.append(getDistinctCountSelection(QueryTokenStream.concat(ctx.select_item(), this::visit, TOKEN_COMMA)));
80-
} else {
80+
} else if (primaryFromAlias != null) {
8181
nested.append(QueryTokens.token(primaryFromAlias));
82+
} else {
83+
nested.append(visit(ctx.select_item(0)));
8284
}
8385
} else {
8486
builder.append(QueryTokens.token(countProjection));
@@ -98,12 +100,12 @@ private QueryRendererBuilder getDistinctCountSelection(QueryTokenStream selectio
98100
CountSelectionTokenStream countSelection = CountSelectionTokenStream.create(selectionListbuilder);
99101

100102
if (countSelection.requiresPrimaryAlias()) {
101-
// constructor
102-
if (primaryFromAlias == null) {
103-
throw new IllegalStateException(
104-
"Primary alias must be set for DISTINCT count selection using constructor expressions");
103+
if (primaryFromAlias != null) {
104+
nested.append(QueryTokens.token(primaryFromAlias));
105+
} else {
106+
// no alias available, fall back to the constructor arguments
107+
nested.append(countSelection.withoutConstructorExpression());
105108
}
106-
nested.append(QueryTokens.token(primaryFromAlias));
107109
} else {
108110
// keep all the select items to distinct against
109111
nested.append(countSelection);

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import java.util.Collections;
2222
import java.util.List;
2323

24-
import org.springframework.data.jpa.repository.query.EqlParser.Range_variable_declarationContext;
2524
import org.springframework.lang.Nullable;
2625

2726
/**
@@ -60,8 +59,8 @@ public Void visitSelect_clause(EqlParser.Select_clauseContext ctx) {
6059
@Override
6160
public Void visitRange_variable_declaration(EqlParser.Range_variable_declarationContext ctx) {
6261

63-
if (primaryFromAlias == null) {
64-
primaryFromAlias = capturePrimaryAlias(ctx);
62+
if (primaryFromAlias == null && ctx.identification_variable() != null) {
63+
primaryFromAlias = capturePrimaryAlias(ctx.identification_variable());
6564
}
6665

6766
return super.visitRange_variable_declaration(ctx);
@@ -74,9 +73,8 @@ public Void visitConstructor_expression(EqlParser.Constructor_expressionContext
7473
return super.visitConstructor_expression(ctx);
7574
}
7675

77-
private static String capturePrimaryAlias(Range_variable_declarationContext ctx) {
78-
return ctx.identification_variable() != null ? ctx.identification_variable().getText()
79-
: ctx.entity_name().getText();
76+
private static String capturePrimaryAlias(EqlParser.Identification_variableContext ctx) {
77+
return ctx.getText();
8078
}
8179

8280
private static List<QueryToken> captureSelectItems(List<EqlParser.Select_itemContext> selections,

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,9 @@ public QueryTokenStream visitRange_variable_declaration(EqlParser.Range_variable
213213
builder.append(QueryTokens.expression(ctx.AS()));
214214
}
215215

216-
builder.appendExpression(visit(ctx.identification_variable()));
216+
if (ctx.identification_variable() != null) {
217+
builder.appendExpression(visit(ctx.identification_variable()));
218+
}
217219

218220
return builder;
219221
}
@@ -1318,8 +1320,6 @@ public QueryTokenStream visitEntity_or_value_expression(EqlParser.Entity_or_valu
13181320
public QueryTokenStream visitSimple_entity_or_value_expression(
13191321
EqlParser.Simple_entity_or_value_expressionContext ctx) {
13201322

1321-
QueryRendererBuilder builder = QueryRenderer.builder();
1322-
13231323
if (ctx.identification_variable() != null) {
13241324
return visit(ctx.identification_variable());
13251325
} else if (ctx.input_parameter() != null) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public QueryTokenStream visitSelect_clause(EqlParser.Select_clauseContext ctx) {
9595

9696
QueryTokenStream selectItems = QueryTokenStream.concat(ctx.select_item(), this::visit, TOKEN_COMMA);
9797

98-
if (dtoDelegate != null && dtoDelegate.canRewrite()) {
98+
if (dtoDelegate.canRewrite()) {
9999
builder.append(dtoDelegate.getRewrittenSelectionList());
100100
} else {
101101
builder.append(selectItems);

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,6 @@ private QueryRendererBuilder getDistinctCountSelection(QueryTokenStream selectio
260260
if (countSelection.requiresPrimaryAlias()) {
261261

262262
if (primaryFromAlias != null) {
263-
// constructor
264263
nested.append(QueryTokens.token(primaryFromAlias));
265264
} else {
266265
nested.append(countSelection.withoutConstructorExpression());

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3236,7 +3236,7 @@ public QueryTokenStream visitCastTarget(HqlParser.CastTargetContext ctx) {
32363236
if (!tokens.isEmpty()) {
32373237
tokens.add(TOKEN_COMMA);
32383238
}
3239-
tokens.add(QueryTokens.expression(terminalNode));
3239+
tokens.add(QueryTokens.token(terminalNode));
32403240

32413241
});
32423242

@@ -3249,7 +3249,7 @@ public QueryTokenStream visitCastTarget(HqlParser.CastTargetContext ctx) {
32493249

32503250
@Override
32513251
public QueryTokenStream visitCastTargetType(HqlParser.CastTargetTypeContext ctx) {
3252-
return QueryRendererBuilder.from(QueryTokens.expression(ctx.fullTargetName));
3252+
return QueryRendererBuilder.from(QueryTokens.token(ctx.fullTargetName));
32533253
}
32543254

32553255
@Override

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
* @author Christoph Strobl
3131
* @since 3.1
3232
*/
33-
@SuppressWarnings("ConstantValue")
3433
class JpqlCountQueryTransformer extends JpqlQueryRenderer {
3534

3635
private final @Nullable String countProjection;
@@ -77,8 +76,10 @@ public QueryRendererBuilder visitSelect_clause(JpqlParser.Select_clauseContext c
7776
if (usesDistinct) {
7877
nested.append(QueryTokens.expression(ctx.DISTINCT()));
7978
nested.append(getDistinctCountSelection(QueryTokenStream.concat(ctx.select_item(), this::visit, TOKEN_COMMA)));
80-
} else {
79+
} else if (primaryFromAlias != null) {
8180
nested.append(QueryTokens.token(primaryFromAlias));
81+
} else {
82+
nested.append(visit(ctx.select_item(0)));
8283
}
8384
} else {
8485
builder.append(QueryTokens.token(countProjection));
@@ -99,12 +100,12 @@ private QueryRendererBuilder getDistinctCountSelection(QueryTokenStream selectio
99100
CountSelectionTokenStream countSelection = CountSelectionTokenStream.create(selectionListbuilder);
100101

101102
if (countSelection.requiresPrimaryAlias()) {
102-
// constructor
103-
if (primaryFromAlias == null) {
104-
throw new IllegalStateException(
105-
"Primary alias must be set for DISTINCT count selection using constructor expressions");
103+
if (primaryFromAlias != null) {
104+
nested.append(QueryTokens.token(primaryFromAlias));
105+
} else {
106+
// no alias available
107+
nested.append(countSelection.withoutConstructorExpression());
106108
}
107-
nested.append(QueryTokens.token(primaryFromAlias));
108109
} else {
109110
// keep all the select items to distinct against
110111
nested.append(countSelection);

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
* @author Mark Paluch
3030
* @author Christoph Strobl
3131
*/
32-
@SuppressWarnings({ "UnreachableCode", "ConstantValue" })
32+
@SuppressWarnings({ "UnreachableCode" })
3333
class JpqlQueryIntrospector extends JpqlBaseVisitor<Void> implements ParsedQueryIntrospector<QueryInformation> {
3434

3535
private final JpqlQueryRenderer renderer = new JpqlQueryRenderer();
@@ -48,8 +48,8 @@ public QueryInformation getParsedQueryInformation() {
4848
@Override
4949
public Void visitRange_variable_declaration(JpqlParser.Range_variable_declarationContext ctx) {
5050

51-
if (primaryFromAlias == null) {
52-
primaryFromAlias = capturePrimaryAlias(ctx);
51+
if (primaryFromAlias == null && ctx.identification_variable() != null) {
52+
primaryFromAlias = capturePrimaryAlias(ctx.identification_variable());
5353
}
5454

5555
return super.visitRange_variable_declaration(ctx);
@@ -74,9 +74,8 @@ public Void visitConstructor_expression(JpqlParser.Constructor_expressionContext
7474
return super.visitConstructor_expression(ctx);
7575
}
7676

77-
private static String capturePrimaryAlias(JpqlParser.Range_variable_declarationContext ctx) {
78-
return ctx.identification_variable() != null ? ctx.identification_variable().getText()
79-
: ctx.entity_name().getText();
77+
private static String capturePrimaryAlias(JpqlParser.Identification_variableContext ctx) {
78+
return ctx.getText();
8079
}
8180

8281
private static List<QueryToken> captureSelectItems(List<JpqlParser.Select_itemContext> selections,

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,9 @@ public QueryTokenStream visitRange_variable_declaration(JpqlParser.Range_variabl
173173
builder.append(QueryTokens.expression(ctx.AS()));
174174
}
175175

176-
builder.appendExpression(visit(ctx.identification_variable()));
176+
if (ctx.identification_variable() != null) {
177+
builder.appendExpression(visit(ctx.identification_variable()));
178+
}
177179

178180
return builder;
179181
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public QueryTokenStream visitSelect_clause(JpqlParser.Select_clauseContext ctx)
8787

8888
QueryTokenStream selectItems = QueryTokenStream.concat(ctx.select_item(), this::visit, TOKEN_COMMA);
8989

90-
if (dtoDelegate != null && dtoDelegate.canRewrite()) {
90+
if (dtoDelegate.canRewrite()) {
9191
builder.append(dtoDelegate.getRewrittenSelectionList());
9292
} else {
9393
builder.append(selectItems);

0 commit comments

Comments
 (0)