Fix NPE when parsing modifying HQL.

Closes #3649
Original pull request: #3650
This commit is contained in:
Christoph Strobl
2024-10-25 13:35:13 +02:00
committed by Mark Paluch
parent 3ad78aba4f
commit 84e0e323f7
2 changed files with 21 additions and 10 deletions

View File

@@ -101,8 +101,12 @@ class HqlQueryTransformer extends HqlQueryRenderer {
return false;
} else if (ctx instanceof HqlParser.InsertStatementContext) {
return false;
} else if (ctx instanceof HqlParser.DeleteStatementContext) {
return false;
} else if (ctx instanceof HqlParser.UpdateStatementContext) {
return false;
} else {
return isSubquery(ctx.getParent());
return ctx.getParent() != null ? isSubquery(ctx.getParent()) : false;
}
}

View File

@@ -995,16 +995,23 @@ class HqlQueryTransformerTests {
.isEqualTo("FROM Story WHERE enabled = true order by created desc");
}
@Test // GH-2977
void isSubqueryThrowsException() {
String query = """
insert into MyEntity (id, col)
select max(id), col
from MyEntityStaging
group by col
""";
@ParameterizedTest
@ValueSource(strings = { """
insert into MyEntity (id, col)
select max(id), col
from MyEntityStaging
group by col
""", """
update MyEntity AS mes
set mes.col = 'test'
where mes.id = 1
""", """
delete MyEntity AS mes
where mes.col = 'test'
"""
}) // GH-2977, GH-3649
void isSubqueryThrowsException(String query) {
assertThat(createQueryFor(query, Sort.unsorted())).isEqualToIgnoringWhitespace(query);
}