@@ -5069,22 +5069,7 @@ impl<'a> Parser<'a> {
50695069 temporary: bool,
50705070 ) -> Result<Statement, ParserError> {
50715071 let if_not_exists = self.parse_keywords(&[Keyword::IF, Keyword::NOT, Keyword::EXISTS]);
5072- let name = self.parse_object_name(false)?;
5073-
5074- let parse_function_param =
5075- |parser: &mut Parser| -> Result<OperateFunctionArg, ParserError> {
5076- let name = parser.parse_identifier()?;
5077- let data_type = parser.parse_data_type()?;
5078- Ok(OperateFunctionArg {
5079- mode: None,
5080- name: Some(name),
5081- data_type,
5082- default_expr: None,
5083- })
5084- };
5085- self.expect_token(&Token::LParen)?;
5086- let args = self.parse_comma_separated0(parse_function_param, Token::RParen)?;
5087- self.expect_token(&Token::RParen)?;
5072+ let (name, args) = self.parse_create_function_name_and_params()?;
50885073
50895074 let return_type = if self.parse_keyword(Keyword::RETURNS) {
50905075 Some(self.parse_data_type()?)
@@ -5159,22 +5144,7 @@ impl<'a> Parser<'a> {
51595144 or_replace: bool,
51605145 temporary: bool,
51615146 ) -> Result<Statement, ParserError> {
5162- let name = self.parse_object_name(false)?;
5163-
5164- let parse_function_param =
5165- |parser: &mut Parser| -> Result<OperateFunctionArg, ParserError> {
5166- let name = parser.parse_identifier()?;
5167- let data_type = parser.parse_data_type()?;
5168- Ok(OperateFunctionArg {
5169- mode: None,
5170- name: Some(name),
5171- data_type,
5172- default_expr: None,
5173- })
5174- };
5175- self.expect_token(&Token::LParen)?;
5176- let args = self.parse_comma_separated0(parse_function_param, Token::RParen)?;
5177- self.expect_token(&Token::RParen)?;
5147+ let (name, args) = self.parse_create_function_name_and_params()?;
51785148
51795149 let return_type = if self.parse_keyword(Keyword::RETURNS) {
51805150 Some(self.parse_data_type()?)
@@ -5214,6 +5184,27 @@ impl<'a> Parser<'a> {
52145184 }))
52155185 }
52165186
5187+ fn parse_create_function_name_and_params(
5188+ &mut self,
5189+ ) -> Result<(ObjectName, Vec<OperateFunctionArg>), ParserError> {
5190+ let name = self.parse_object_name(false)?;
5191+ let parse_function_param =
5192+ |parser: &mut Parser| -> Result<OperateFunctionArg, ParserError> {
5193+ let name = parser.parse_identifier()?;
5194+ let data_type = parser.parse_data_type()?;
5195+ Ok(OperateFunctionArg {
5196+ mode: None,
5197+ name: Some(name),
5198+ data_type,
5199+ default_expr: None,
5200+ })
5201+ };
5202+ self.expect_token(&Token::LParen)?;
5203+ let args = self.parse_comma_separated0(parse_function_param, Token::RParen)?;
5204+ self.expect_token(&Token::RParen)?;
5205+ Ok((name, args))
5206+ }
5207+
52175208 fn parse_function_arg(&mut self) -> Result<OperateFunctionArg, ParserError> {
52185209 let mode = if self.parse_keyword(Keyword::IN) {
52195210 Some(ArgMode::In)
0 commit comments