@@ -6470,35 +6470,45 @@ impl<'a> Parser<'a> {
64706470 let mut merges = false;
64716471
64726472 loop {
6473- // Parse parameter name
6474- let param_name = self.parse_identifier()?;
6475- let param_name_upper = param_name.value.to_uppercase();
6473+ // Parse parameter name as keyword
6474+ let keyword = self.expect_one_of_keywords(&[
6475+ Keyword::FUNCTION,
6476+ Keyword::PROCEDURE,
6477+ Keyword::LEFTARG,
6478+ Keyword::RIGHTARG,
6479+ Keyword::COMMUTATOR,
6480+ Keyword::NEGATOR,
6481+ Keyword::RESTRICT,
6482+ Keyword::JOIN,
6483+ Keyword::HASHES,
6484+ Keyword::MERGES,
6485+ ])?;
64766486
64776487 // Check if this is a flag (HASHES or MERGES) - no '=' expected
6478- match param_name_upper.as_str() {
6479- " HASHES" => {
6488+ match keyword {
6489+ Keyword:: HASHES => {
64806490 hashes = true;
64816491 }
6482- " MERGES" => {
6492+ Keyword:: MERGES => {
64836493 merges = true;
64846494 }
6485- " FUNCTION" | " PROCEDURE" => {
6495+ Keyword:: FUNCTION | Keyword:: PROCEDURE => {
64866496 self.expect_token(&Token::Eq)?;
64876497 let func_name = self.parse_object_name(false)?;
64886498 function = Some(func_name);
6489- is_procedure = param_name_upper == " PROCEDURE" ;
6499+ is_procedure = keyword == Keyword:: PROCEDURE;
64906500 }
6491- " LEFTARG" => {
6501+ Keyword:: LEFTARG => {
64926502 self.expect_token(&Token::Eq)?;
64936503 let data_type = self.parse_data_type()?;
64946504 left_arg = Some(data_type);
64956505 }
6496- " RIGHTARG" => {
6506+ Keyword:: RIGHTARG => {
64976507 self.expect_token(&Token::Eq)?;
64986508 let data_type = self.parse_data_type()?;
64996509 right_arg = Some(data_type);
65006510 }
6501- " COMMUTATOR" => {
6511+ Keyword:: COMMUTATOR => {
65026512 self.expect_token(&Token::Eq)?;
65036513 let op_name = if self.parse_keyword(Keyword::OPERATOR) {
65046514 self.expect_token(&Token::LParen)?;
@@ -6510,7 +6520,7 @@ impl<'a> Parser<'a> {
65106520 };
65116521 commutator = Some(op_name);
65126522 }
6513- " NEGATOR" => {
6523+ Keyword:: NEGATOR => {
65146524 self.expect_token(&Token::Eq)?;
65156525 let op_name = if self.parse_keyword(Keyword::OPERATOR) {
65166526 self.expect_token(&Token::LParen)?;
@@ -6522,22 +6532,17 @@ impl<'a> Parser<'a> {
65226532 };
65236533 negator = Some(op_name);
65246534 }
6525- " RESTRICT" => {
6535+ Keyword:: RESTRICT => {
65266536 self.expect_token(&Token::Eq)?;
65276537 let func_name = self.parse_object_name(false)?;
65286538 restrict = Some(func_name);
65296539 }
6530- " JOIN" => {
6540+ Keyword:: JOIN => {
65316541 self.expect_token(&Token::Eq)?;
65326542 let func_name = self.parse_object_name(false)?;
65336543 join = Some(func_name);
65346544 }
6535- _ => {
6536- return Err(ParserError::ParserError(format!(
6537- "Unknown CREATE OPERATOR parameter: {}",
6538- param_name_upper
6539- )))
6540- }
6545+ _ => unreachable!("unexpected keyword in CREATE OPERATOR"),
65416546 }
65426547
65436548 // Check for comma or closing parenthesis
0 commit comments