mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-08-19 05:30:19 +00:00
Add support for postgres json operators ->
, ->>
, #>
, and #>>
(#458)
* add support for postgres json selection Signed-off-by: password <rbalajis25@gmail.com> * fix clippy Signed-off-by: password <rbalajis25@gmail.com> * add support for postgres `#>` and `#>>` json operator * fix clippy Signed-off-by: poonai <rbalajis25@gmail.com> * resolve comments Signed-off-by: password <rbalajis25@gmail.com>
This commit is contained in:
parent
8f207db059
commit
d035784bdf
4 changed files with 174 additions and 2 deletions
|
@ -1146,6 +1146,23 @@ impl<'a> Parser<'a> {
|
|||
return self.parse_array_index(expr);
|
||||
}
|
||||
self.parse_map_access(expr)
|
||||
} else if Token::Arrow == tok
|
||||
|| Token::LongArrow == tok
|
||||
|| Token::HashArrow == tok
|
||||
|| Token::HashLongArrow == tok
|
||||
{
|
||||
let operator = match tok {
|
||||
Token::Arrow => JsonOperator::Arrow,
|
||||
Token::LongArrow => JsonOperator::LongArrow,
|
||||
Token::HashArrow => JsonOperator::HashArrow,
|
||||
Token::HashLongArrow => JsonOperator::HashLongArrow,
|
||||
_ => unreachable!(),
|
||||
};
|
||||
Ok(Expr::JsonAccess {
|
||||
left: Box::new(expr),
|
||||
operator,
|
||||
right: Box::new(self.parse_expr()?),
|
||||
})
|
||||
} else {
|
||||
// Can only happen if `get_next_precedence` got out of sync with this function
|
||||
parser_err!(format!("No infix parser for token {:?}", tok))
|
||||
|
@ -1291,7 +1308,11 @@ impl<'a> Parser<'a> {
|
|||
Token::Mul | Token::Div | Token::Mod | Token::StringConcat => Ok(40),
|
||||
Token::DoubleColon => Ok(50),
|
||||
Token::ExclamationMark => Ok(50),
|
||||
Token::LBracket => Ok(50),
|
||||
Token::LBracket
|
||||
| Token::LongArrow
|
||||
| Token::Arrow
|
||||
| Token::HashArrow
|
||||
| Token::HashLongArrow => Ok(50),
|
||||
_ => Ok(0),
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue