diff --git a/sqlparse/sql.py b/sqlparse/sql.py index 5489f055..dabd88bd 100644 --- a/sqlparse/sql.py +++ b/sqlparse/sql.py @@ -638,7 +638,7 @@ def get_parameters(self): def get_window(self): """Return the window if it exists.""" over_clause = self.token_next_by(i=Over) - if not over_clause: + if over_clause[1] is None: return None return over_clause[1].tokens[-1] diff --git a/tests/test_grouping.py b/tests/test_grouping.py index bf278817..0caaf9a0 100644 --- a/tests/test_grouping.py +++ b/tests/test_grouping.py @@ -393,6 +393,10 @@ def test_grouping_function(): assert isinstance(p.tokens[0], sql.Function) assert len(list(p.tokens[0].get_parameters())) == 1 assert isinstance(p.tokens[0].get_window(), sql.Parenthesis) + # A function without an OVER clause has no window. + p = sqlparse.parse('foo(5)')[0] + assert isinstance(p.tokens[0], sql.Function) + assert p.tokens[0].get_window() is None def test_grouping_function_not_in():