Skip to content

Commit 21cdef3

Browse files
committed
support parsing empty map literal syntax
1 parent d49acc6 commit 21cdef3

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

src/parser/mod.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2352,12 +2352,14 @@ impl<'a> Parser<'a> {
23522352
/// [map]: https://duckdb.org/docs/sql/data_types/map.html#creating-maps
23532353
fn parse_duckdb_map_literal(&mut self) -> Result<Expr, ParserError> {
23542354
self.expect_token(&Token::LBrace)?;
2355-
2356-
let fields = self.parse_comma_separated(Self::parse_duckdb_map_field)?;
2357-
2358-
self.expect_token(&Token::RBrace)?;
2359-
2360-
Ok(Expr::Map(Map { entries: fields }))
2355+
if self.peek_token().token == Token::RBrace {
2356+
let _ = self.next_token(); // consume }
2357+
Ok(Expr::Map(Map { entries: vec![] }))
2358+
} else {
2359+
let fields = self.parse_comma_separated(Self::parse_duckdb_map_field)?;
2360+
self.expect_token(&Token::RBrace)?;
2361+
Ok(Expr::Map(Map { entries: fields }))
2362+
}
23612363
}
23622364

23632365
/// Parse a field for a duckdb [map]

tests/sqlparser_common.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10282,6 +10282,8 @@ fn test_map_syntax() {
1028210282
}),
1028310283
},
1028410284
);
10285+
10286+
check("MAP {}", Expr::Map(Map { entries: vec![] }));
1028510287
}
1028610288

1028710289
#[test]

0 commit comments

Comments
 (0)