mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-08-04 06:18:17 +00:00
accept JSON_TABLE both as an unquoted table name and a table-valued function (#1134)
This commit is contained in:
parent
d59b6638fa
commit
1a07c5d67c
2 changed files with 20 additions and 1 deletions
|
@ -7515,7 +7515,11 @@ impl<'a> Parser<'a> {
|
||||||
with_offset,
|
with_offset,
|
||||||
with_offset_alias,
|
with_offset_alias,
|
||||||
})
|
})
|
||||||
} else if self.parse_keyword(Keyword::JSON_TABLE) {
|
} else if matches!(
|
||||||
|
self.peek_token().token, Token::Word(w)
|
||||||
|
if w.keyword == Keyword::JSON_TABLE && self.peek_nth_token(1).token == Token::LParen
|
||||||
|
) {
|
||||||
|
self.expect_keyword(Keyword::JSON_TABLE)?;
|
||||||
self.expect_token(&Token::LParen)?;
|
self.expect_token(&Token::LParen)?;
|
||||||
let json_expr = self.parse_expr()?;
|
let json_expr = self.parse_expr()?;
|
||||||
self.expect_token(&Token::Comma)?;
|
self.expect_token(&Token::Comma)?;
|
||||||
|
|
|
@ -2328,6 +2328,21 @@ fn test_json() {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn parse_json_table_is_not_reserved() {
|
||||||
|
// JSON_TABLE is not a reserved keyword in PostgreSQL, even though it is in SQL:2023
|
||||||
|
// see: https://en.wikipedia.org/wiki/List_of_SQL_reserved_words
|
||||||
|
let Select { from, .. } = pg_and_generic().verified_only_select("SELECT * FROM JSON_TABLE");
|
||||||
|
assert_eq!(1, from.len());
|
||||||
|
match &from[0].relation {
|
||||||
|
TableFactor::Table {
|
||||||
|
name: ObjectName(name),
|
||||||
|
..
|
||||||
|
} => assert_eq!("JSON_TABLE", name[0].value),
|
||||||
|
other => panic!("Expected JSON_TABLE to be parsed as a table name, but got {other:?}"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_composite_value() {
|
fn test_composite_value() {
|
||||||
let sql = "SELECT (on_hand.item).name FROM on_hand WHERE (on_hand.item).price > 9";
|
let sql = "SELECT (on_hand.item).name FROM on_hand WHERE (on_hand.item).price > 9";
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue