Skip to content

Commit 8dd2d04

Browse files
authored
parser: fix parsing create or replace view (#474)
we didn't have any test cases of the `or replace` variant of `create view`. #473
1 parent 6bd0e50 commit 8dd2d04

File tree

3 files changed

+39
-0
lines changed

3 files changed

+39
-0
lines changed

crates/squawk_parser/src/grammar.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4836,6 +4836,7 @@ fn stmt(p: &mut Parser, r: &StmtRestrictions) -> Option<CompletedMarker> {
48364836
RECURSIVE_KW | TEMP_KW | TEMPORARY_KW => Some(create_view_stmt(p)),
48374837
RULE_KW => Some(create_rule_stmt(p)),
48384838
TRANSFORM_KW => Some(create_transform_stmt(p)),
4839+
VIEW_KW => Some(create_view_stmt(p)),
48394840
_ => Some(create_function_stmt(p)),
48404841
}
48414842
}

crates/squawk_parser/src/snapshots/squawk_parser__test__create_view_ok.snap

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,3 +518,38 @@ SOURCE_FILE
518518
OPTION_KW "option"
519519
SEMICOLON ";"
520520
WHITESPACE "\n\n"
521+
COMMENT "-- regression test"
522+
WHITESPACE "\n"
523+
CREATE_VIEW_STMT
524+
CREATE_KW "create"
525+
WHITESPACE " "
526+
OR_REPLACE
527+
OR_KW "or"
528+
WHITESPACE " "
529+
REPLACE_KW "replace"
530+
WHITESPACE " "
531+
VIEW_KW "view"
532+
WHITESPACE " "
533+
PATH
534+
PATH_SEGMENT
535+
NAME
536+
IDENT "my_view"
537+
WHITESPACE " "
538+
AS_KW "as"
539+
WHITESPACE "\n"
540+
SELECT
541+
SELECT_CLAUSE
542+
SELECT_KW "select"
543+
WHITESPACE " "
544+
TARGET_LIST
545+
TARGET
546+
NAME_REF
547+
IDENT "x"
548+
WHITESPACE " "
549+
FROM_CLAUSE
550+
FROM_KW "from"
551+
WHITESPACE " "
552+
NAME_REF
553+
IDENT "foo"
554+
SEMICOLON ";"
555+
WHITESPACE "\n"

crates/squawk_parser/test_data/ok/create_view.sql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,6 @@ create temporary view foo
4343
as select 1, 2, 3
4444
with local check option;
4545

46+
-- regression test
47+
create or replace view my_view as
48+
select x from foo;

0 commit comments

Comments
 (0)