Skip to content

Commit e00d104

Browse files
committed
feat: support "create view" with relpersistence
1 parent 9160453 commit e00d104

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
@@ -124,4 +124,20 @@ mod tests {
124124
],
125125
)
126126
}
127+
128+
#[test]
129+
fn test_create_view() {
130+
test_get_node_properties(
131+
"create or replace temporary view comedies as select * from films;",
132+
SyntaxKind::ViewStmt,
133+
vec![
134+
TokenProperty::from(SyntaxKind::Create),
135+
TokenProperty::from(SyntaxKind::View),
136+
TokenProperty::from(SyntaxKind::As),
137+
TokenProperty::from(SyntaxKind::Or),
138+
TokenProperty::from(SyntaxKind::Replace),
139+
TokenProperty::from(SyntaxKind::Temporary),
140+
],
141+
)
142+
}
127143
}

0 commit comments

Comments
 (0)