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
)
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 )