Skip to content

Commit 6ab4ef8

Browse files
committed
snowflake json: cleanup/fix bracket and dot notation
1 parent d7c6483 commit 6ab4ef8

1 file changed

Lines changed: 5 additions & 4 deletions

File tree

src/parser.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -342,8 +342,6 @@ impl<'a> Parser<'a> {
342342
unexpected => self.expected("an expression", unexpected),
343343
}?;
344344

345-
let expr = self.parse_bracket_indexes(expr)?;
346-
347345
if self.parse_keyword(Keyword::COLLATE) {
348346
Ok(Expr::Collate {
349347
expr: Box::new(expr),
@@ -761,7 +759,7 @@ impl<'a> Parser<'a> {
761759
Token::Sharp if dialect_of!(self is PostgreSqlDialect) => {
762760
Some(BinaryOperator::PGBitwiseXor)
763761
}
764-
Token::Colon => Some(BinaryOperator::JsonIndex),
762+
Token::Colon | Token::Period => Some(BinaryOperator::JsonIndex),
765763
Token::Word(w) => match w.keyword {
766764
Keyword::AND => Some(BinaryOperator::And),
767765
Keyword::OR => Some(BinaryOperator::Or),
@@ -826,6 +824,9 @@ impl<'a> Parser<'a> {
826824
}
827825
} else if Token::DoubleColon == tok {
828826
Ok((self.parse_pg_cast(expr)?, true))
827+
} else if Token::LBracket == tok {
828+
self.prev_token();
829+
Ok((self.parse_bracket_indexes(expr)?, true))
829830
} else if Token::ExclamationMark == tok {
830831
// PostgreSQL factorial operation
831832
Ok((
@@ -951,9 +952,9 @@ impl<'a> Parser<'a> {
951952
Token::Pipe => Ok(21),
952953
Token::Caret | Token::Sharp | Token::ShiftRight | Token::ShiftLeft => Ok(22),
953954
Token::Ampersand => Ok(23),
954-
Token::Colon => Ok(25),
955955
Token::Plus | Token::Minus => Ok(Self::PLUS_MINUS_PREC),
956956
Token::Mult | Token::Div | Token::Mod | Token::StringConcat => Ok(40),
957+
Token::Colon | Token::LBracket | Token::Period => Ok(45),
957958
Token::DoubleColon => Ok(50),
958959
Token::ExclamationMark => Ok(50),
959960
_ => Ok(0),

0 commit comments

Comments
 (0)