Skip to content

Commit 8af927d

Browse files
iffyioayman-sigma
authored andcommitted
Fix CREATE FUNCTION round trip for Hive dialect (apache#1693)
1 parent 8d8dd77 commit 8af927d

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
@@ -4563,14 +4563,13 @@ impl<'a> Parser<'a> {
45634563
temporary: bool,
45644564
) -> Result<Statement, ParserError> {
45654565
let name = self.parse_object_name(false)?;
4566+
45664567
self.expect_token(&Token::LParen)?;
4567-
let args = if self.consume_token(&Token::RParen) {
4568-
self.prev_token();
4569-
None
4568+
let args = if Token::RParen != self.peek_token_ref().token {
4569+
self.parse_comma_separated(Parser::parse_function_arg)?
45704570
} else {
4571-
Some(self.parse_comma_separated(Parser::parse_function_arg)?)
4571+
vec![]
45724572
};
4573-
45744573
self.expect_token(&Token::RParen)?;
45754574

45764575
let return_type = if self.parse_keyword(Keyword::RETURNS) {
@@ -4666,7 +4665,7 @@ impl<'a> Parser<'a> {
46664665
or_replace,
46674666
temporary,
46684667
name,
4669-
args,
4668+
args: Some(args),
46704669
return_type,
46714670
behavior: body.behavior,
46724671
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)