Skip to content

Commit d5d1cf9

Browse files
committed
Fix a type and missing branches in base walkers for ordered set aggregates
1 parent 236ece7 commit d5d1cf9

File tree

7 files changed

+17
-5
lines changed

7 files changed

+17
-5
lines changed

hibernate-core/src/main/java/org/hibernate/query/sqm/spi/BaseSemanticQueryWalker.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
import org.hibernate.query.sqm.tree.expression.SqmLiteralEntityType;
5454
import org.hibernate.query.sqm.tree.expression.SqmModifiedSubQueryExpression;
5555
import org.hibernate.query.sqm.tree.expression.SqmNamedParameter;
56+
import org.hibernate.query.sqm.tree.expression.SqmOrderedSetAggregateFunction;
5657
import org.hibernate.query.sqm.tree.expression.SqmOverflow;
5758
import org.hibernate.query.sqm.tree.expression.SqmParameterizedEntityType;
5859
import org.hibernate.query.sqm.tree.expression.SqmPositionalParameter;
@@ -582,6 +583,9 @@ public Object visitFunction(SqmFunction<?> sqmFunction) {
582583
if ( filter != null ) {
583584
filter.accept( this );
584585
}
586+
if ( sqmFunction instanceof SqmOrderedSetAggregateFunction<?> ) {
587+
visitOrderByClause( ( (SqmOrderedSetAggregateFunction<?>) sqmFunction ).getWithinGroup() );
588+
}
585589
}
586590
return sqmFunction;
587591
}

hibernate-core/src/main/java/org/hibernate/sql/ast/SqlAstWalker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ public interface SqlAstWalker {
161161

162162
void visitQueryLiteral(QueryLiteral<?> queryLiteral);
163163

164-
void acceptConvertedQueryLiteral(ConvertedQueryLiteral<?,?> convertedQueryLiteral);
164+
void visitConvertedQueryLiteral(ConvertedQueryLiteral<?,?> convertedQueryLiteral);
165165

166166
void visitUnaryOperationExpression(UnaryOperation unaryOperationExpression);
167167

hibernate-core/src/main/java/org/hibernate/sql/ast/spi/AbstractSqlAstTranslator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4589,7 +4589,7 @@ public void visitQueryLiteral(QueryLiteral<?> queryLiteral) {
45894589
}
45904590

45914591
@Override
4592-
public void acceptConvertedQueryLiteral(ConvertedQueryLiteral<?, ?> convertedQueryLiteral) {
4592+
public void visitConvertedQueryLiteral(ConvertedQueryLiteral<?, ?> convertedQueryLiteral) {
45934593
visitLiteral( convertedQueryLiteral );
45944594
}
45954595

hibernate-core/src/main/java/org/hibernate/sql/ast/spi/AbstractSqlAstWalker.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.hibernate.sql.ast.tree.expression.JdbcLiteral;
3535
import org.hibernate.sql.ast.tree.expression.JdbcParameter;
3636
import org.hibernate.sql.ast.tree.expression.ModifiedSubQueryExpression;
37+
import org.hibernate.sql.ast.tree.expression.OrderedSetAggregateFunctionExpression;
3738
import org.hibernate.sql.ast.tree.expression.Over;
3839
import org.hibernate.sql.ast.tree.expression.Overflow;
3940
import org.hibernate.sql.ast.tree.expression.QueryLiteral;
@@ -106,6 +107,11 @@ public void visitSelfRenderingExpression(SelfRenderingExpression expression) {
106107
if ( aggregateFunctionExpression.getFilter() != null ) {
107108
aggregateFunctionExpression.getFilter().accept( this );
108109
}
110+
if ( expression instanceof OrderedSetAggregateFunctionExpression ) {
111+
for ( SortSpecification specification : ( (OrderedSetAggregateFunctionExpression) expression ).getWithinGroup() ) {
112+
specification.accept( this );
113+
}
114+
}
109115
}
110116
}
111117
}
@@ -480,7 +486,7 @@ public void visitQueryLiteral(QueryLiteral<?> queryLiteral) {
480486
}
481487

482488
@Override
483-
public void acceptConvertedQueryLiteral(ConvertedQueryLiteral<?,?> convertedQueryLiteral) {
489+
public void visitConvertedQueryLiteral(ConvertedQueryLiteral<?,?> convertedQueryLiteral) {
484490
}
485491

486492
@Override

hibernate-core/src/main/java/org/hibernate/sql/ast/spi/ExpressionReplacementWalker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ public void visitQueryLiteral(QueryLiteral<?> queryLiteral) {
219219
}
220220

221221
@Override
222-
public void acceptConvertedQueryLiteral(ConvertedQueryLiteral<?, ?> convertedQueryLiteral) {
222+
public void visitConvertedQueryLiteral(ConvertedQueryLiteral<?, ?> convertedQueryLiteral) {
223223
doReplaceExpression( convertedQueryLiteral );
224224
}
225225

hibernate-core/src/main/java/org/hibernate/sql/ast/tree/expression/ConvertedQueryLiteral.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public void bindParameterValue(
9797

9898
@Override
9999
public void accept(SqlAstWalker sqlTreeWalker) {
100-
sqlTreeWalker.acceptConvertedQueryLiteral( this );
100+
sqlTreeWalker.visitConvertedQueryLiteral( this );
101101
}
102102

103103
@Override

hibernate-core/src/main/java/org/hibernate/sql/ast/tree/expression/QueryTransformer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@
66
*/
77
package org.hibernate.sql.ast.tree.expression;
88

9+
import org.hibernate.Incubating;
910
import org.hibernate.query.sqm.sql.SqmToSqlAstConverter;
1011
import org.hibernate.sql.ast.tree.cte.CteContainer;
1112
import org.hibernate.sql.ast.tree.select.QuerySpec;
1213

1314
/**
1415
* @author Christian Beikov
1516
*/
17+
@Incubating
1618
public interface QueryTransformer {
1719

1820
QuerySpec transform(

0 commit comments

Comments
 (0)