diff --git a/crates/squawk_parser/src/grammar.rs b/crates/squawk_parser/src/grammar.rs index 60257554..8a3efc65 100644 --- a/crates/squawk_parser/src/grammar.rs +++ b/crates/squawk_parser/src/grammar.rs @@ -4836,6 +4836,7 @@ fn stmt(p: &mut Parser, r: &StmtRestrictions) -> Option { RECURSIVE_KW | TEMP_KW | TEMPORARY_KW => Some(create_view_stmt(p)), RULE_KW => Some(create_rule_stmt(p)), TRANSFORM_KW => Some(create_transform_stmt(p)), + VIEW_KW => Some(create_view_stmt(p)), _ => Some(create_function_stmt(p)), } } diff --git a/crates/squawk_parser/src/snapshots/squawk_parser__test__create_view_ok.snap b/crates/squawk_parser/src/snapshots/squawk_parser__test__create_view_ok.snap index aee0d9ef..08202a2c 100644 --- a/crates/squawk_parser/src/snapshots/squawk_parser__test__create_view_ok.snap +++ b/crates/squawk_parser/src/snapshots/squawk_parser__test__create_view_ok.snap @@ -518,3 +518,38 @@ SOURCE_FILE OPTION_KW "option" SEMICOLON ";" WHITESPACE "\n\n" + COMMENT "-- regression test" + WHITESPACE "\n" + CREATE_VIEW_STMT + CREATE_KW "create" + WHITESPACE " " + OR_REPLACE + OR_KW "or" + WHITESPACE " " + REPLACE_KW "replace" + WHITESPACE " " + VIEW_KW "view" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME + IDENT "my_view" + WHITESPACE " " + AS_KW "as" + WHITESPACE "\n" + SELECT + SELECT_CLAUSE + SELECT_KW "select" + WHITESPACE " " + TARGET_LIST + TARGET + NAME_REF + IDENT "x" + WHITESPACE " " + FROM_CLAUSE + FROM_KW "from" + WHITESPACE " " + NAME_REF + IDENT "foo" + SEMICOLON ";" + WHITESPACE "\n" diff --git a/crates/squawk_parser/test_data/ok/create_view.sql b/crates/squawk_parser/test_data/ok/create_view.sql index dbbfe077..21b72c66 100644 --- a/crates/squawk_parser/test_data/ok/create_view.sql +++ b/crates/squawk_parser/test_data/ok/create_view.sql @@ -43,3 +43,6 @@ create temporary view foo as select 1, 2, 3 with local check option; +-- regression test +create or replace view my_view as +select x from foo;