@@ -12644,6 +12644,8 @@ fn parse_map_access_expr() {
1264412644
1264512645#[test]
1264612646fn parse_connect_by() {
12647+ let dialects = all_dialects_where(|d| d.supports_connect_by());
12648+
1264712649 let expect_query = Select {
1264812650 select_token: AttachedToken::empty(),
1264912651 optimizer_hint: None,
@@ -12702,7 +12704,7 @@ fn parse_connect_by() {
1270212704 );
1270312705
1270412706 assert_eq!(
12705- all_dialects_where(|d| d.supports_connect_by()) .verified_only_select(connect_by_1),
12707+ dialects .verified_only_select(connect_by_1),
1270612708 expect_query
1270712709 );
1270812710
@@ -12714,8 +12716,7 @@ fn parse_connect_by() {
1271412716 "ORDER BY employee_id"
1271512717 );
1271612718 assert_eq!(
12717- all_dialects_where(|d| d.supports_connect_by())
12718- .verified_only_select_with_canonical(connect_by_2, connect_by_1),
12719+ dialects.verified_only_select_with_canonical(connect_by_2, connect_by_1),
1271912720 expect_query
1272012721 );
1272112722
@@ -12728,7 +12729,7 @@ fn parse_connect_by() {
1272812729 "ORDER BY employee_id"
1272912730 );
1273012731 assert_eq!(
12731- all_dialects_where(|d| d.supports_connect_by()) .verified_only_select(connect_by_3),
12732+ dialects .verified_only_select(connect_by_3),
1273212733 Select {
1273312734 select_token: AttachedToken::empty(),
1273412735 optimizer_hint: None,
@@ -12791,7 +12792,7 @@ fn parse_connect_by() {
1279112792 "WHERE employee_id <> 42 ",
1279212793 "ORDER BY employee_id"
1279312794 );
12794- all_dialects_where(|d| d.supports_connect_by())
12795+ dialects
1279512796 .parse_sql_statements(connect_by_4)
1279612797 .expect_err("should have failed");
1279712798
@@ -12809,7 +12810,7 @@ fn parse_connect_by() {
1280912810 // no START WITH and NOCYCLE
1281012811 let connect_by_5 = "SELECT child, parent FROM t CONNECT BY NOCYCLE parent = PRIOR child";
1281112812 assert_eq!(
12812- all_dialects_where(|d| d.supports_connect_by()) .verified_only_select(connect_by_5),
12813+ dialects .verified_only_select(connect_by_5),
1281312814 Select {
1281412815 select_token: AttachedToken::empty(),
1281512816 optimizer_hint: None,
@@ -12850,6 +12851,13 @@ fn parse_connect_by() {
1285012851 flavor: SelectFlavor::Standard,
1285112852 }
1285212853 );
12854+
12855+ // ~ CONNECT BY after WHERE and before GROUP BY
12856+ dialects.verified_only_select("SELECT 0 FROM t WHERE 1 = 1 CONNECT BY 2 = 2 GROUP BY 3");
12857+ dialects.verified_only_select("SELECT 0 FROM t WHERE 1 = 1 START WITH 'a' = 'a' CONNECT BY 2 = 2 GROUP BY 3");
12858+ dialects.verified_only_select_with_canonical(
12859+ "SELECT 0 FROM t WHERE 1 = 1 CONNECT BY 2 = 2 START WITH 'a' = 'a' GROUP BY 3",
12860+ "SELECT 0 FROM t WHERE 1 = 1 START WITH 'a' = 'a' CONNECT BY 2 = 2 GROUP BY 3");
1285312861}
1285412862
1285512863#[test]
0 commit comments