NullPointerException: EntityValuedPathInterpretation - getNavigablePath()

Description

After upgrade I got this regress exception.

Most likely inttroduced by this recent change:
https://github.com/hibernate/hibernate-orm/commit/d59ecb633be3fc8807a3d15872ddc763abb9a9cc#diff-21badcfee2c44fc2bbceba0439d80ab0bbc821dae042e5def69cce3d45cf0cf4R382

Stacktrace

Suppressed: java.lang.NullPointerException: Cannot invoke "org.hibernate.query.sqm.tree.domain.SqmPath.getNavigablePath()" because the return value of "org.hibernate.query.sqm.tree.domain.SqmPath.getLhs()" is null at org.hibernate.query.sqm.sql.internal.EntityValuedPathInterpretation.selectionContains(EntityValuedPathInterpretation.java:373) at org.hibernate.query.sqm.sql.internal.EntityValuedPathInterpretation.isSelected(EntityValuedPathInterpretation.java:361) at org.hibernate.query.sqm.sql.internal.EntityValuedPathInterpretation.from(EntityValuedPathInterpretation.java:271) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitTableGroup(BaseSqmToSqlAstConverter.java:4083) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitRootPath(BaseSqmToSqlAstConverter.java:3821) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitRootPath(BaseSqmToSqlAstConverter.java:435) at org.hibernate.query.sqm.tree.from.SqmRoot.accept(SqmRoot.java:162) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.resolveGroupOrOrderByExpression(BaseSqmToSqlAstConverter.java:2402) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitGroupByClause(BaseSqmToSqlAstConverter.java:2458) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitQuerySpec(BaseSqmToSqlAstConverter.java:2058) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitQuerySpec(BaseSqmToSqlAstConverter.java:435) at org.hibernate.query.sqm.tree.select.SqmQuerySpec.accept(SqmQuerySpec.java:125) at org.hibernate.query.sqm.spi.BaseSemanticQueryWalker.visitQueryPart(BaseSemanticQueryWalker.java:226) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitQueryPart(BaseSqmToSqlAstConverter.java:1909) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitSubQueryExpression(BaseSqmToSqlAstConverter.java:6669) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitSubQueryExpression(BaseSqmToSqlAstConverter.java:435) at org.hibernate.query.sqm.tree.select.SqmSubQuery.accept(SqmSubQuery.java:663) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitWithInferredType(BaseSqmToSqlAstConverter.java:6787) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitInSubQueryPredicate(BaseSqmToSqlAstConverter.java:7718) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitInSubQueryPredicate(BaseSqmToSqlAstConverter.java:435) at org.hibernate.query.sqm.tree.predicate.SqmInSubQueryPredicate.accept(SqmInSubQueryPredicate.java:87) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitWhereClause(BaseSqmToSqlAstConverter.java:2478) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitQuerySpec(BaseSqmToSqlAstConverter.java:2055) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitQuerySpec(BaseSqmToSqlAstConverter.java:435) at org.hibernate.query.sqm.tree.select.SqmQuerySpec.accept(SqmQuerySpec.java:125) at org.hibernate.query.sqm.spi.BaseSemanticQueryWalker.visitQueryPart(BaseSemanticQueryWalker.java:226) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitQueryPart(BaseSqmToSqlAstConverter.java:1909) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitSelectStatement(BaseSqmToSqlAstConverter.java:1594) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitSelectStatement(BaseSqmToSqlAstConverter.java:435) at org.hibernate.query.sqm.tree.select.SqmSelectStatement.accept(SqmSelectStatement.java:222) at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.translate(BaseSqmToSqlAstConverter.java:771) at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.buildCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:345) at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:268) at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performScroll(ConcreteSqmSelectQueryPlan.java:252) at org.hibernate.query.sqm.internal.QuerySqmImpl.doScroll(QuerySqmImpl.java:629) at org.hibernate.query.spi.AbstractSelectionQuery.scroll(AbstractSelectionQuery.java:445) at org.hibernate.query.spi.AbstractSelectionQuery.stream(AbstractSelectionQuery.java:457) at org.hibernate.query.Query.getResultStream(Query.java:168)

Anonymized query

SELECT c FROM Entity1 c JOIN c.attr3 WHERE c IN ( SELECT c2 FROM Entity1 c2 JOIN c2.attr4 cst WHERE MOD(c2.id, :arg1) = :partition AND c2.attr2 = false AND c2.attr1 = :attr1 GROUP BY c2 HAVING max(cst.attr5) < :arg2 )

Activity

Show:
Fixed

Details

Assignee

Reporter

Worked in

Sprint

Fix versions

Affects versions

Priority

Created November 10, 2023 at 12:54 PM
Updated November 23, 2023 at 1:53 PM
Resolved November 14, 2023 at 4:36 PM

Flag notifications