Skip to content

Commit 639c591

Browse files
committed
feat: support "create view" with relpersistence
1 parent 761d11a commit 639c591

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

crates/codegen/src/get_node_properties.rs

+11
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,17 @@ fn custom_handlers(node: &Node) -> TokenStream {
439439
tokens.push(TokenProperty::from(Token::Or));
440440
tokens.push(TokenProperty::from(Token::Replace));
441441
}
442+
if let Some(n) = &n.view {
443+
match n.relpersistence.as_str() {
444+
// Permanent
445+
"p" => {},
446+
// Unlogged
447+
"u" => tokens.push(TokenProperty::from(Token::Unlogged)),
448+
// Temporary
449+
"t" => tokens.push(TokenProperty::from(Token::Temporary)),
450+
_ => panic!("Unknown ViewStmt {:#?}", n),
451+
}
452+
}
442453
},
443454
"CreateStmt" => quote! {
444455
tokens.push(TokenProperty::from(Token::Create));

crates/parser/src/codegen.rs

+16
Original file line numberDiff line numberDiff line change
@@ -105,4 +105,20 @@ mod tests {
105105
],
106106
)
107107
}
108+
109+
#[test]
110+
fn test_create_view() {
111+
test_get_node_properties(
112+
"create or replace temporary view comedies as select * from films;",
113+
SyntaxKind::ViewStmt,
114+
vec![
115+
TokenProperty::from(SyntaxKind::Create),
116+
TokenProperty::from(SyntaxKind::View),
117+
TokenProperty::from(SyntaxKind::As),
118+
TokenProperty::from(SyntaxKind::Or),
119+
TokenProperty::from(SyntaxKind::Replace),
120+
TokenProperty::from(SyntaxKind::Temporary),
121+
],
122+
)
123+
}
108124
}

0 commit comments

Comments
 (0)