diff --git a/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java b/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java index 09ca9faba..f2e6105ff 100644 --- a/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java +++ b/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java @@ -766,17 +766,22 @@ public Void visit(AnalyticExpression analytic, S context) { } if (analytic.getWindowElement() != null) { - if (analytic.getWindowElement().getRange().getStart().getExpression() != null) { - analytic.getWindowElement().getRange().getStart().getExpression().accept(this, - context); - } - if (analytic.getWindowElement().getRange().getEnd().getExpression() != null) { - analytic.getWindowElement().getRange().getEnd().getExpression().accept(this, - context); + if (analytic.getWindowElement().getRange() != null) { + if (analytic.getWindowElement().getRange().getStart() != null + && analytic.getWindowElement().getRange().getStart().getExpression() != null) { + analytic.getWindowElement().getRange().getStart().getExpression().accept(this, + context); + } + if (analytic.getWindowElement().getRange().getEnd() != null + && analytic.getWindowElement().getRange().getEnd().getExpression() != null) { + analytic.getWindowElement().getRange().getEnd().getExpression().accept(this, + context); + } } - if (analytic.getWindowElement().getOffset() != null) { + if (analytic.getWindowElement().getOffset() != null && analytic.getWindowElement().getOffset().getExpression() != null) { analytic.getWindowElement().getOffset().getExpression().accept(this, context); } + } return null; } diff --git a/src/test/java/net/sf/jsqlparser/util/TablesNamesFinderTest.java b/src/test/java/net/sf/jsqlparser/util/TablesNamesFinderTest.java index 44a27624c..8581a0e59 100644 --- a/src/test/java/net/sf/jsqlparser/util/TablesNamesFinderTest.java +++ b/src/test/java/net/sf/jsqlparser/util/TablesNamesFinderTest.java @@ -771,4 +771,12 @@ void testJsonTable() throws JSQLParserException { } + @Test + void testWindowExpressionWithNoRangeAndNoOffsetDoesNotThrowException() { + String sqlStr = "SELECT c, SUM(COUNT(*)) OVER (ORDER BY c ASC ROWS UNBOUNDED PRECEDING) FROM tbl GROUP BY c"; + + assertThatCode(() -> TablesNamesFinder.findTables(sqlStr)) + .doesNotThrowAnyException(); + } + }