@@ -509,9 +509,10 @@ impl<'a> Parser<'a> {
509509
510510 // end of statement
511511 Token::Word(word)
512- if expecting_statement_delimiter && word.keyword == Keyword::END => {
513- break;
514- }
512+ if expecting_statement_delimiter && word.keyword == Keyword::END =>
513+ {
514+ break;
515+ }
515516 _ => {}
516517 }
517518
@@ -1261,38 +1262,38 @@ impl<'a> Parser<'a> {
12611262 let next_token = self.next_token();
12621263 match next_token.token {
12631264 t @ (Token::Word(_) | Token::SingleQuotedString(_))
1264- if self.peek_token().token == Token::Period => {
1265- let mut id_parts: Vec<Ident> = vec![match t {
1266- Token::Word(w) => w.into_ident(next_token.span),
1267- Token::SingleQuotedString(s) => Ident::with_quote('\'', s),
1268- _ => {
1269- return Err(ParserError::ParserError(
1270- "Internal parser error: unexpected token type".to_string(),
1271- ))
1265+ if self.peek_token().token == Token::Period =>
1266+ {
1267+ let mut id_parts: Vec<Ident> = vec![match t {
1268+ Token::Word(w) => w.into_ident(next_token.span),
1269+ Token::SingleQuotedString(s) => Ident::with_quote('\'', s),
1270+ _ => {
1271+ return Err(ParserError::ParserError(
1272+ "Internal parser error: unexpected token type".to_string(),
1273+ ))
1274+ }
1275+ }];
1276+
1277+ while self.consume_token(&Token::Period) {
1278+ let next_token = self.next_token();
1279+ match next_token.token {
1280+ Token::Word(w) => id_parts.push(w.into_ident(next_token.span)),
1281+ Token::SingleQuotedString(s) => {
1282+ // SQLite has single-quoted identifiers
1283+ id_parts.push(Ident::with_quote('\'', s))
12721284 }
1273- }];
1274-
1275- while self.consume_token(&Token::Period) {
1276- let next_token = self.next_token();
1277- match next_token.token {
1278- Token::Word(w) => id_parts.push(w.into_ident(next_token.span)),
1279- Token::SingleQuotedString(s) => {
1280- // SQLite has single-quoted identifiers
1281- id_parts.push(Ident::with_quote('\'', s))
1282- }
1283- Token::Mul => {
1284- return Ok(Expr::QualifiedWildcard(
1285- ObjectName::from(id_parts),
1286- AttachedToken(next_token),
1287- ));
1288- }
1289- _ => {
1290- return self
1291- .expected("an identifier or a '*' after '.'", next_token);
1292- }
1285+ Token::Mul => {
1286+ return Ok(Expr::QualifiedWildcard(
1287+ ObjectName::from(id_parts),
1288+ AttachedToken(next_token),
1289+ ));
1290+ }
1291+ _ => {
1292+ return self.expected("an identifier or a '*' after '.'", next_token);
12931293 }
12941294 }
12951295 }
1296+ }
12961297 Token::Mul => {
12971298 return Ok(Expr::Wildcard(AttachedToken(next_token)));
12981299 }
@@ -4888,9 +4889,10 @@ impl<'a> Parser<'a> {
48884889 match &self.peek_nth_token_ref(0).token {
48894890 Token::EOF => break,
48904891 Token::Word(w)
4891- if w.quote_style.is_none() && terminal_keywords.contains(&w.keyword) => {
4892- break;
4893- }
4892+ if w.quote_style.is_none() && terminal_keywords.contains(&w.keyword) =>
4893+ {
4894+ break;
4895+ }
48944896 _ => {}
48954897 }
48964898
@@ -8066,55 +8068,60 @@ impl<'a> Parser<'a> {
80668068 Keyword::NULL,
80678069 ]) {
80688070 Some(Keyword::FIELDS)
8069- if self.parse_keywords(&[Keyword::TERMINATED, Keyword::BY]) => {
8071+ if self.parse_keywords(&[Keyword::TERMINATED, Keyword::BY]) =>
8072+ {
8073+ row_delimiters.push(HiveRowDelimiter {
8074+ delimiter: HiveDelimiter::FieldsTerminatedBy,
8075+ char: self.parse_identifier()?,
8076+ });
8077+
8078+ if self.parse_keywords(&[Keyword::ESCAPED, Keyword::BY]) {
80708079 row_delimiters.push(HiveRowDelimiter {
8071- delimiter: HiveDelimiter::FieldsTerminatedBy ,
8080+ delimiter: HiveDelimiter::FieldsEscapedBy ,
80728081 char: self.parse_identifier()?,
80738082 });
8074-
8075- if self.parse_keywords(&[Keyword::ESCAPED, Keyword::BY]) {
8076- row_delimiters.push(HiveRowDelimiter {
8077- delimiter: HiveDelimiter::FieldsEscapedBy,
8078- char: self.parse_identifier()?,
8079- });
8080- }
80818083 }
8084+ }
80828085 Some(Keyword::COLLECTION)
80838086 if self.parse_keywords(&[
80848087 Keyword::ITEMS,
80858088 Keyword::TERMINATED,
80868089 Keyword::BY,
8087- ]) => {
8088- row_delimiters.push(HiveRowDelimiter {
8089- delimiter: HiveDelimiter::CollectionItemsTerminatedBy,
8090- char: self.parse_identifier()?,
8091- });
8092- }
8090+ ]) =>
8091+ {
8092+ row_delimiters.push(HiveRowDelimiter {
8093+ delimiter: HiveDelimiter::CollectionItemsTerminatedBy,
8094+ char: self.parse_identifier()?,
8095+ });
8096+ }
80938097 Some(Keyword::MAP)
80948098 if self.parse_keywords(&[
80958099 Keyword::KEYS,
80968100 Keyword::TERMINATED,
80978101 Keyword::BY,
8098- ]) => {
8099- row_delimiters.push(HiveRowDelimiter {
8100- delimiter: HiveDelimiter::MapKeysTerminatedBy,
8101- char: self.parse_identifier()?,
8102- });
8103- }
8102+ ]) =>
8103+ {
8104+ row_delimiters.push(HiveRowDelimiter {
8105+ delimiter: HiveDelimiter::MapKeysTerminatedBy,
8106+ char: self.parse_identifier()?,
8107+ });
8108+ }
81048109 Some(Keyword::LINES)
8105- if self.parse_keywords(&[Keyword::TERMINATED, Keyword::BY]) => {
8106- row_delimiters.push(HiveRowDelimiter {
8107- delimiter: HiveDelimiter::LinesTerminatedBy,
8108- char: self.parse_identifier()?,
8109- });
8110- }
8110+ if self.parse_keywords(&[Keyword::TERMINATED, Keyword::BY]) =>
8111+ {
8112+ row_delimiters.push(HiveRowDelimiter {
8113+ delimiter: HiveDelimiter::LinesTerminatedBy,
8114+ char: self.parse_identifier()?,
8115+ });
8116+ }
81118117 Some(Keyword::NULL)
8112- if self.parse_keywords(&[Keyword::DEFINED, Keyword::AS]) => {
8113- row_delimiters.push(HiveRowDelimiter {
8114- delimiter: HiveDelimiter::NullDefinedAs,
8115- char: self.parse_identifier()?,
8116- });
8117- }
8118+ if self.parse_keywords(&[Keyword::DEFINED, Keyword::AS]) =>
8119+ {
8120+ row_delimiters.push(HiveRowDelimiter {
8121+ delimiter: HiveDelimiter::NullDefinedAs,
8122+ char: self.parse_identifier()?,
8123+ });
8124+ }
81188125 _ => {
81198126 break;
81208127 }
0 commit comments