Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
Development Version
-------------------

Nothing yet.
* Recognize REFRESH as a DDL keyword so that REFRESH MATERIALIZED VIEW
statements are detected and formatted correctly (issue797).


Release 0.6.0 (Aug 13, 2026)
Expand Down
1 change: 1 addition & 0 deletions sqlparse/keywords.py
Original file line number Diff line number Diff line change
Expand Up @@ -568,6 +568,7 @@ def find_delimited_spans(text):
'REF': tokens.Keyword,
'REFERENCES': tokens.Keyword,
'REFERENCING': tokens.Keyword,
'REFRESH': tokens.Keyword.DDL,
'REINDEX': tokens.Keyword,
'RELATIVE': tokens.Keyword,
'RENAME': tokens.Keyword,
Expand Down
19 changes: 19 additions & 0 deletions tests/test_regressions.py
Original file line number Diff line number Diff line change
Expand Up @@ -477,6 +477,25 @@ def test_materialized_view_issue752():
assert formatted == 'CREATE MATERIALIZED VIEW v AS SELECT 1'


@pytest.mark.parametrize('statement', [
'REFRESH MATERIALIZED VIEW order_summary;',
'refresh materialized view order_summary;',
'REFRESH MATERIALIZED VIEW CONCURRENTLY public.order_summary;',
'REFRESH MATERIALIZED VIEW order_summary WITH NO DATA;',
'-- update cached results\nREFRESH MATERIALIZED VIEW order_summary;',
])
def test_refresh_materialized_view_type_issue797(statement):
parsed = sqlparse.parse(statement)[0]
assert parsed.get_type() == 'REFRESH'
assert str(parsed) == statement


def test_refresh_materialized_view_format_issue797():
formatted = sqlparse.format(
'refresh materialized view order_summary;', keyword_case='upper')
assert formatted == 'REFRESH MATERIALIZED VIEW order_summary;'


@pytest.mark.parametrize('sql', [
'a BETWEEN .03 AND .06',
'a between .03 and .06',
Expand Down