@@ -12628,6 +12628,8 @@ fn parse_map_access_expr() {
1262812628
1262912629#[test]
1263012630fn parse_connect_by() {
12631+ let dialects = all_dialects_where(|d| d.supports_connect_by());
12632+
1263112633 let expect_query = Select {
1263212634 select_token: AttachedToken::empty(),
1263312635 optimizer_hint: None,
@@ -12685,7 +12687,7 @@ fn parse_connect_by() {
1268512687 );
1268612688
1268712689 assert_eq!(
12688- all_dialects_where(|d| d.supports_connect_by()) .verified_only_select(connect_by_1),
12690+ dialects .verified_only_select(connect_by_1),
1268912691 expect_query
1269012692 );
1269112693
@@ -12697,8 +12699,7 @@ fn parse_connect_by() {
1269712699 "ORDER BY employee_id"
1269812700 );
1269912701 assert_eq!(
12700- all_dialects_where(|d| d.supports_connect_by())
12701- .verified_only_select_with_canonical(connect_by_2, connect_by_1),
12702+ dialects.verified_only_select_with_canonical(connect_by_2, connect_by_1),
1270212703 expect_query
1270312704 );
1270412705
@@ -12711,7 +12712,7 @@ fn parse_connect_by() {
1271112712 "ORDER BY employee_id"
1271212713 );
1271312714 assert_eq!(
12714- all_dialects_where(|d| d.supports_connect_by()) .verified_only_select(connect_by_3),
12715+ dialects .verified_only_select(connect_by_3),
1271512716 Select {
1271612717 select_token: AttachedToken::empty(),
1271712718 optimizer_hint: None,
@@ -12773,7 +12774,7 @@ fn parse_connect_by() {
1277312774 "WHERE employee_id <> 42 ",
1277412775 "ORDER BY employee_id"
1277512776 );
12776- all_dialects_where(|d| d.supports_connect_by())
12777+ dialects
1277712778 .parse_sql_statements(connect_by_4)
1277812779 .expect_err("should have failed");
1277912780
@@ -12791,7 +12792,7 @@ fn parse_connect_by() {
1279112792 // no START WITH and NOCYCLE
1279212793 let connect_by_5 = "SELECT child, parent FROM t CONNECT BY NOCYCLE parent = PRIOR child";
1279312794 assert_eq!(
12794- all_dialects_where(|d| d.supports_connect_by()) .verified_only_select(connect_by_5),
12795+ dialects .verified_only_select(connect_by_5),
1279512796 Select {
1279612797 select_token: AttachedToken::empty(),
1279712798 optimizer_hint: None,
@@ -12832,6 +12833,13 @@ fn parse_connect_by() {
1283212833 flavor: SelectFlavor::Standard,
1283312834 }
1283412835 );
12836+
12837+ // ~ CONNECT BY after WHERE and before GROUP BY
12838+ dialects.verified_only_select("SELECT 0 FROM t WHERE 1 = 1 CONNECT BY 2 = 2 GROUP BY 3");
12839+ dialects.verified_only_select("SELECT 0 FROM t WHERE 1 = 1 START WITH 'a' = 'a' CONNECT BY 2 = 2 GROUP BY 3");
12840+ dialects.verified_only_select_with_canonical(
12841+ "SELECT 0 FROM t WHERE 1 = 1 CONNECT BY 2 = 2 START WITH 'a' = 'a' GROUP BY 3",
12842+ "SELECT 0 FROM t WHERE 1 = 1 START WITH 'a' = 'a' CONNECT BY 2 = 2 GROUP BY 3");
1283512843}
1283612844
1283712845#[test]
0 commit comments