Skip to content

Commit 9c384a9

Browse files
authored
Fix CREATE FUNCTION round trip for Hive dialect (apache#1693)
1 parent a7e9840 commit 9c384a9

File tree

3 files changed

+6
-9
lines changed

3 files changed

+6
-9
lines changed

src/ast/ddl.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2011,8 +2011,6 @@ impl fmt::Display for CreateFunction {
20112011
)?;
20122012
if let Some(args) = &self.args {
20132013
write!(f, "({})", display_comma_separated(args))?;
2014-
} else {
2015-
write!(f, "()")?;
20162014
}
20172015
if let Some(return_type) = &self.return_type {
20182016
write!(f, " RETURNS {return_type}")?;

src/parser/mod.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4553,14 +4553,13 @@ impl<'a> Parser<'a> {
45534553
temporary: bool,
45544554
) -> Result<Statement, ParserError> {
45554555
let name = self.parse_object_name(false)?;
4556+
45564557
self.expect_token(&Token::LParen)?;
4557-
let args = if self.consume_token(&Token::RParen) {
4558-
self.prev_token();
4559-
None
4558+
let args = if Token::RParen != self.peek_token_ref().token {
4559+
self.parse_comma_separated(Parser::parse_function_arg)?
45604560
} else {
4561-
Some(self.parse_comma_separated(Parser::parse_function_arg)?)
4561+
vec![]
45624562
};
4563-
45644563
self.expect_token(&Token::RParen)?;
45654564

45664565
let return_type = if self.parse_keyword(Keyword::RETURNS) {
@@ -4656,7 +4655,7 @@ impl<'a> Parser<'a> {
46564655
or_replace,
46574656
temporary,
46584657
name,
4659-
args,
4658+
args: Some(args),
46604659
return_type,
46614660
behavior: body.behavior,
46624661
called_on_null: body.called_on_null,

tests/sqlparser_postgres.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5147,7 +5147,7 @@ fn parse_trigger_related_functions() {
51475147
temporary: false,
51485148
if_not_exists: false,
51495149
name: ObjectName::from(vec![Ident::new("emp_stamp")]),
5150-
args: None,
5150+
args: Some(vec![]),
51515151
return_type: Some(DataType::Trigger),
51525152
function_body: Some(
51535153
CreateFunctionBody::AsBeforeOptions(

0 commit comments

Comments
 (0)