Skip to content

Commit 0332aab

Browse files
committed
Test that redundant nesting is supported
SELECT * FROM (((SELECT 1))) is just as valid as SELECT * FROM (SELECT 1). Add a test to ensure that we can parse the first form. Addresses a comment from #100.
1 parent 5f9f17d commit 0332aab

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

tests/sqlparser_common.rs

+20-2
Original file line numberDiff line numberDiff line change
@@ -1466,7 +1466,7 @@ fn parse_join_nesting() {
14661466
}
14671467

14681468
macro_rules! nest {
1469-
($base:expr, $($join:expr),*) => {
1469+
($base:expr $(, $join:expr)*) => {
14701470
TableFactor::NestedJoin {
14711471
base: Box::new($base),
14721472
joins: vec![$(join($join)),*]
@@ -1487,7 +1487,17 @@ fn parse_join_nesting() {
14871487
let sql = "SELECT * FROM (a NATURAL JOIN b) NATURAL JOIN c";
14881488
let select = verified_only_select(sql);
14891489
assert_eq!(select.relation.unwrap(), nest!(table("a"), table("b")),);
1490-
assert_eq!(select.joins, vec![join(table("c"))],)
1490+
assert_eq!(select.joins, vec![join(table("c"))]);
1491+
1492+
let sql = "SELECT * FROM (((a NATURAL JOIN b)))";
1493+
let select = verified_only_select(sql);
1494+
assert_eq!(select.relation.unwrap(), nest!(nest!(nest!(table("a"), table("b")))));
1495+
assert_eq!(select.joins, vec![]);
1496+
1497+
let sql = "SELECT * FROM a NATURAL JOIN (((b NATURAL JOIN c)))";
1498+
let select = verified_only_select(sql);
1499+
assert_eq!(select.relation.unwrap(), table("a"));
1500+
assert_eq!(select.joins, vec![join(nest!(nest!(nest!(table("b"), table("c")))))]);
14911501
}
14921502

14931503
#[test]
@@ -1586,6 +1596,14 @@ fn parse_derived_tables() {
15861596
CROSS JOIN (SELECT y FROM bar) AS b (y)";
15871597
let _ = verified_only_select(sql);
15881598
//TODO: add assertions
1599+
1600+
let sql = "SELECT * FROM (((SELECT 1)))";
1601+
let _ = verified_only_select(sql);
1602+
// TODO: add assertions
1603+
1604+
let sql = "SELECT * FROM t NATURAL JOIN (((SELECT 1)))";
1605+
let _ = verified_only_select(sql);
1606+
// TODO: add assertions
15891607
}
15901608

15911609
#[test]

0 commit comments

Comments
 (0)