Skip to content

Commit 639bb17

Browse files
committed
feat: support CreatedbStmt
1 parent 4613037 commit 639bb17

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

Diff for: crates/codegen/src/get_node_properties.rs

+15
Original file line numberDiff line numberDiff line change
@@ -683,6 +683,21 @@ fn custom_handlers(node: &Node) -> TokenStream {
683683
tokens.push(TokenProperty::from(Token::Create));
684684
tokens.push(TokenProperty::from(Token::TypeP));
685685
},
686+
"CreatedbStmt" => quote! {
687+
tokens.push(TokenProperty::from(Token::Create));
688+
tokens.push(TokenProperty::from(Token::Database));
689+
for option in &n.options {
690+
if let Some(NodeEnum::DefElem(node)) = &option.node {
691+
if node.defname == "location" {
692+
tokens.push(TokenProperty::from(Token::Default));
693+
}
694+
if node.defname == "connection_limit" {
695+
tokens.push(TokenProperty::from(Token::Limit));
696+
tokens.push(TokenProperty::from(Token::Iconst));
697+
}
698+
}
699+
}
700+
},
686701
_ => quote! {},
687702
}
688703
}

Diff for: crates/parser/src/codegen.rs

+15
Original file line numberDiff line numberDiff line change
@@ -268,4 +268,19 @@ mod tests {
268268
],
269269
)
270270
}
271+
272+
#[test]
273+
fn test_create_database() {
274+
test_get_node_properties(
275+
"create database x owner abc connection limit 5;",
276+
SyntaxKind::CreatedbStmt,
277+
vec![
278+
TokenProperty::from(SyntaxKind::Create),
279+
TokenProperty::from(SyntaxKind::Database),
280+
TokenProperty::from(SyntaxKind::Limit),
281+
TokenProperty::from(SyntaxKind::Iconst),
282+
TokenProperty::from("x".to_string()),
283+
],
284+
)
285+
}
271286
}

Diff for: crates/parser/tests/data/statements/valid/0047.sql

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
CREATE DATABASE x OWNER abc CONNECTION LIMIT 5;
2+
CREATE DATABASE x ENCODING \"SQL_ASCII\";
3+
CREATE DATABASE x LC_COLLATE \"en_US.UTF-8\";
4+
CREATE DATABASE x LOCATION DEFAULT;
5+
CREATE DATABASE x TABLESPACE abc;
6+
CREATE DATABASE x TEMPLATE TRUE;

0 commit comments

Comments
 (0)