|
18 | 18 | //! sqlparser regardless of the chosen dialect (i.e. it doesn't conflict with |
19 | 19 | //! dialect-specific parsing rules). |
20 | 20 |
|
21 | | -use matches::assert_matches; |
| 21 | +#[macro_use] |
| 22 | +#[path = "macros/mod.rs"] |
| 23 | +mod macros; |
22 | 24 |
|
| 25 | +use matches::assert_matches; |
23 | 26 | use sqlparser::ast::*; |
24 | 27 | use sqlparser::dialect::keywords::ALL_KEYWORDS; |
25 | 28 | use sqlparser::parser::ParserError; |
26 | | -use sqlparser::test_utils::{all_dialects, expr_from_projection, number, only}; |
| 29 | +use sqlparser::test_utils::{all_dialects, expr_from_projection, join, number, only, table}; |
27 | 30 |
|
28 | 31 | #[test] |
29 | 32 | fn parse_insert_values() { |
@@ -2282,31 +2285,6 @@ fn parse_complex_join() { |
2282 | 2285 |
|
2283 | 2286 | #[test] |
2284 | 2287 | fn parse_join_nesting() { |
2285 | | - fn table(name: impl Into<String>) -> TableFactor { |
2286 | | - TableFactor::Table { |
2287 | | - name: ObjectName(vec![Ident::new(name.into())]), |
2288 | | - alias: None, |
2289 | | - args: vec![], |
2290 | | - with_hints: vec![], |
2291 | | - } |
2292 | | - } |
2293 | | - |
2294 | | - fn join(relation: TableFactor) -> Join { |
2295 | | - Join { |
2296 | | - relation, |
2297 | | - join_operator: JoinOperator::Inner(JoinConstraint::Natural), |
2298 | | - } |
2299 | | - } |
2300 | | - |
2301 | | - macro_rules! nest { |
2302 | | - ($base:expr $(, $join:expr)*) => { |
2303 | | - TableFactor::NestedJoin(Box::new(TableWithJoins { |
2304 | | - relation: $base, |
2305 | | - joins: vec![$(join($join)),*] |
2306 | | - })) |
2307 | | - }; |
2308 | | - } |
2309 | | - |
2310 | 2288 | let sql = "SELECT * FROM a NATURAL JOIN (b NATURAL JOIN (c NATURAL JOIN d NATURAL JOIN e)) \ |
2311 | 2289 | NATURAL JOIN (f NATURAL JOIN (g NATURAL JOIN h))"; |
2312 | 2290 | assert_eq!( |
@@ -2337,20 +2315,6 @@ fn parse_join_nesting() { |
2337 | 2315 | from.joins, |
2338 | 2316 | vec![join(nest!(nest!(nest!(table("b"), table("c")))))] |
2339 | 2317 | ); |
2340 | | - |
2341 | | - // Parenthesized table names are non-standard, but supported in Snowflake SQL |
2342 | | - let sql = "SELECT * FROM (a NATURAL JOIN (b))"; |
2343 | | - let select = verified_only_select(sql); |
2344 | | - let from = only(select.from); |
2345 | | - |
2346 | | - assert_eq!(from.relation, nest!(table("a"), nest!(table("b")))); |
2347 | | - |
2348 | | - // Double parentheses around table names are non-standard, but supported in Snowflake SQL |
2349 | | - let sql = "SELECT * FROM (a NATURAL JOIN ((b)))"; |
2350 | | - let select = verified_only_select(sql); |
2351 | | - let from = only(select.from); |
2352 | | - |
2353 | | - assert_eq!(from.relation, nest!(table("a"), nest!(nest!(table("b"))))); |
2354 | 2318 | } |
2355 | 2319 |
|
2356 | 2320 | #[test] |
@@ -2490,26 +2454,6 @@ fn parse_derived_tables() { |
2490 | 2454 | }], |
2491 | 2455 | })) |
2492 | 2456 | ); |
2493 | | - |
2494 | | - // Nesting a subquery in parentheses is non-standard, but supported in Snowflake SQL |
2495 | | - let sql = "SELECT * FROM ((SELECT 1) AS t)"; |
2496 | | - let select = verified_only_select(sql); |
2497 | | - let from = only(select.from); |
2498 | | - |
2499 | | - assert_eq!( |
2500 | | - from.relation, |
2501 | | - TableFactor::NestedJoin(Box::new(TableWithJoins { |
2502 | | - relation: TableFactor::Derived { |
2503 | | - lateral: false, |
2504 | | - subquery: Box::new(verified_query("SELECT 1")), |
2505 | | - alias: Some(TableAlias { |
2506 | | - name: "t".into(), |
2507 | | - columns: vec![], |
2508 | | - }) |
2509 | | - }, |
2510 | | - joins: Vec::new(), |
2511 | | - })) |
2512 | | - ); |
2513 | 2457 | } |
2514 | 2458 |
|
2515 | 2459 | #[test] |
|
0 commit comments