diff options
| author | ali-tny <aliteeney@googlemail.com> | 2020-09-26 16:29:40 +1000 |
|---|---|---|
| committer | Andi Albrecht <albrecht.andi@gmail.com> | 2020-09-30 07:21:06 +0200 |
| commit | 4c570778b2e1c06e8bfcb3c48ae5baeff908fcdf (patch) | |
| tree | 20daf054a67724accffe31f4c350f43c776b06ae /tests | |
| parent | 1499cffcd7c4d635b4297b44d48fb4fe94cf988e (diff) | |
| download | sqlparse-4c570778b2e1c06e8bfcb3c48ae5baeff908fcdf.tar.gz | |
Add postgres WINDOW keyword
Postgres allows statements of the form:
```sql
SELECT col_1, col_2, SUM(col_3) OVER w
FROM x
WINDOW w AS (PARTITION BY col_1 ORDER BY col_2)
```
where the window is defined once at the end of the query (see
https://www.postgresql.org/docs/9.5/sql-select.html).
This change adds WINDOW as a postgres keyword, preventing queries like
the above being misparsed, with table name and WINDOW being grouped into
an single identifier <Identifier 'x WINDOW'>.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_tokenize.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/tests/test_tokenize.py b/tests/test_tokenize.py index 0d7f878..af0ba16 100644 --- a/tests/test_tokenize.py +++ b/tests/test_tokenize.py @@ -202,6 +202,12 @@ def test_parse_order_by(): assert p.tokens[0].ttype is T.Keyword +def test_parse_window_as(): + p = sqlparse.parse('WINDOW w AS')[0] + assert len(p.tokens) == 5 + assert p.tokens[0].ttype is T.Keyword + + @pytest.mark.parametrize('s', ( "LIKE", "ILIKE", "NOT LIKE", "NOT ILIKE", "NOT LIKE", "NOT ILIKE", |
