Skip to content

Commit db4c223

Browse files
committed
Add support for LANGUAGE clause in CREATE PROCEDURE
1 parent 204d3b4 commit db4c223

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

src/ast/mod.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3914,6 +3914,7 @@ pub enum Statement {
39143914
or_alter: bool,
39153915
name: ObjectName,
39163916
params: Option<Vec<ProcedureParam>>,
3917+
language: Option<Ident>,
39173918
body: ConditionalStatements,
39183919
},
39193920
/// ```sql
@@ -4817,6 +4818,7 @@ impl fmt::Display for Statement {
48174818
name,
48184819
or_alter,
48194820
params,
4821+
language,
48204822
body,
48214823
} => {
48224824
write!(
@@ -4832,6 +4834,10 @@ impl fmt::Display for Statement {
48324834
}
48334835
}
48344836

4837+
if let Some(language) = language {
4838+
write!(f, " LANGUAGE {language}")?;
4839+
}
4840+
48354841
write!(f, " AS {body}")
48364842
}
48374843
Statement::CreateMacro {

src/parser/mod.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15767,6 +15767,13 @@ impl<'a> Parser<'a> {
1576715767
pub fn parse_create_procedure(&mut self, or_alter: bool) -> Result<Statement, ParserError> {
1576815768
let name = self.parse_object_name(false)?;
1576915769
let params = self.parse_optional_procedure_parameters()?;
15770+
15771+
let language = if self.parse_keyword(Keyword::LANGUAGE) {
15772+
Some(self.parse_identifier()?)
15773+
} else {
15774+
None
15775+
};
15776+
1577015777
self.expect_keyword_is(Keyword::AS)?;
1577115778

1577215779
let body = self.parse_conditional_statements(&[Keyword::END])?;
@@ -15775,6 +15782,7 @@ impl<'a> Parser<'a> {
1577515782
name,
1577615783
or_alter,
1577715784
params,
15785+
language,
1577815786
body,
1577915787
})
1578015788
}

0 commit comments

Comments
 (0)