Stéphane Nicoll (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%...
) *created* an issue
Hibernate ORM (
https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiZGYxNjA3Nzc2...
) / Bug (
https://hibernate.atlassian.net/browse/HHH-16445?atlOrigin=eyJpIjoiZGYxNj...
) HHH-16445 (
https://hibernate.atlassian.net/browse/HHH-16445?atlOrigin=eyJpIjoiZGYxNj...
) avg() no longer works with enums (
https://hibernate.atlassian.net/browse/HHH-16445?atlOrigin=eyJpIjoiZGYxNj...
)
Issue Type: Bug Affects Versions: 6.2.0 Assignee: Unassigned Components: query-criteria
Created: 06/Apr/2023 07:24 AM Priority: Major Reporter: Stéphane Nicoll (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%...
)
We have a very basic smoke test that uses an enum to represent a rating of a review. We
use the avg function to compute an average of the reviews.
Upon upgrading to Hibernate 6.2, this now fails as follows:
Caused by: org.hibernate.QueryException: Parameter 1 of function avg() has type NUMERIC,
but argument is of type smoketest.data.jpa.domain.Rating
at
org.hibernate.query.sqm.produce.function.ArgumentTypesValidator.throwError(ArgumentTypesValidator.java:248)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.sqm.produce.function.ArgumentTypesValidator.checkType(ArgumentTypesValidator.java:213)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.sqm.produce.function.ArgumentTypesValidator.validate(ArgumentTypesValidator.java:97)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.sqm.function.AbstractSqmFunctionDescriptor.generateAggregateSqmExpression(AbstractSqmFunctionDescriptor.java:121)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.hql.internal.SemanticQueryBuilder.visitGenericFunction(SemanticQueryBuilder.java:3984)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.grammars.hql.HqlParser$GenericFunctionContext.accept(HqlParser.java:11403)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:46)
~[antlr4-runtime-4.10.1.jar:4.10.1]
at
org.hibernate.grammars.hql.HqlParserBaseVisitor.visitFunction(HqlParserBaseVisitor.java:1217)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at org.hibernate.grammars.hql.HqlParser$FunctionContext.accept(HqlParser.java:11171)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.hql.internal.SemanticQueryBuilder.visitFunctionExpression(SemanticQueryBuilder.java:1732)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.hql.internal.SemanticQueryBuilder.visitFunctionExpression(SemanticQueryBuilder.java:253)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.grammars.hql.HqlParser$FunctionExpressionContext.accept(HqlParser.java:7476)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:46)
~[antlr4-runtime-4.10.1.jar:4.10.1]
at
org.hibernate.grammars.hql.HqlParserBaseVisitor.visitBarePrimaryExpression(HqlParserBaseVisitor.java:720)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.grammars.hql.HqlParser$BarePrimaryExpressionContext.accept(HqlParser.java:7064)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:46)
~[antlr4-runtime-4.10.1.jar:4.10.1]
at
org.hibernate.grammars.hql.HqlParserBaseVisitor.visitExpressionOrPredicate(HqlParserBaseVisitor.java:860)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.grammars.hql.HqlParser$ExpressionOrPredicateContext.accept(HqlParser.java:7813)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSelectableNode(SemanticQueryBuilder.java:1278)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSelection(SemanticQueryBuilder.java:1252)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSelectClause(SemanticQueryBuilder.java:1235)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.hql.internal.SemanticQueryBuilder.visitQuery(SemanticQueryBuilder.java:1155)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.hql.internal.SemanticQueryBuilder.visitQuerySpecExpression(SemanticQueryBuilder.java:937)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.hql.internal.SemanticQueryBuilder.visitQuerySpecExpression(SemanticQueryBuilder.java:253)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.grammars.hql.HqlParser$QuerySpecExpressionContext.accept(HqlParser.java:1818)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSimpleQueryGroup(SemanticQueryBuilder.java:931)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSimpleQueryGroup(SemanticQueryBuilder.java:253)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.grammars.hql.HqlParser$SimpleQueryGroupContext.accept(HqlParser.java:1711)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSelectStatement(SemanticQueryBuilder.java:418)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.hql.internal.SemanticQueryBuilder.visitStatement(SemanticQueryBuilder.java:377)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.hql.internal.SemanticQueryBuilder.buildSemanticModel(SemanticQueryBuilder.java:295)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.hql.internal.StandardHqlTranslator.translate(StandardHqlTranslator.java:81)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.internal.AbstractSharedSessionContract.lambda$interpretHql$2(AbstractSharedSessionContract.java:744)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.internal.QueryInterpretationCacheStandardImpl.createHqlInterpretation(QueryInterpretationCacheStandardImpl.java:141)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.query.internal.QueryInterpretationCacheStandardImpl.resolveHqlInterpretation(QueryInterpretationCacheStandardImpl.java:128)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.internal.AbstractSharedSessionContract.interpretHql(AbstractSharedSessionContract.java:741)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
at
org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:786)
~[hibernate-core-6.2.0.Final.jar:6.2.0.Final]
... 49 common frames omitted
This fails as the type code is -101977 which seems to be type when an enum has an unknown
jdbc type.
I can try to build a sample if you can’t easily figure out what happened between CR1 and
CR2. Thanks
(
https://hibernate.atlassian.net/browse/HHH-16445#add-comment?atlOrigin=ey...
) Add Comment (
https://hibernate.atlassian.net/browse/HHH-16445#add-comment?atlOrigin=ey...
)
Get Jira notifications on your phone! Download the Jira Cloud app for Android (
https://play.google.com/store/apps/details?id=com.atlassian.android.jira....
) or iOS (
https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=Em...
) This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100221- sha1:8f8083a )