@@ -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