@@ -5544,7 +5544,8 @@ fn parse_named_window_functions() {
55445544 WINDOW w AS (PARTITION BY x), win AS (ORDER BY y)";
55455545 supported_dialects.verified_stmt(sql);
55465546
5547- let select = verified_only_select(sql);
5547+ let select = all_dialects_except(|d| d.is_table_alias(&Keyword::WINDOW, &mut Parser::new(d)))
5548+ .verified_only_select(sql);
55485549
55495550 const EXPECTED_PROJ_QTY: usize = 2;
55505551 assert_eq!(EXPECTED_PROJ_QTY, select.projection.len());
@@ -5574,6 +5575,7 @@ fn parse_named_window_functions() {
55745575
55755576#[test]
55765577fn parse_window_clause() {
5578+ let dialects = all_dialects_except(|d| d.is_table_alias(&Keyword::WINDOW, &mut Parser::new(d)));
55775579 let sql = "SELECT * \
55785580 FROM mytable \
55795581 WINDOW \
@@ -5586,10 +5588,14 @@ fn parse_window_clause() {
55865588 window7 AS (window1 ROWS UNBOUNDED PRECEDING), \
55875589 window8 AS (window1 PARTITION BY a ORDER BY b ROWS UNBOUNDED PRECEDING) \
55885590 ORDER BY C3";
5589- verified_only_select(sql);
5591+ dialects. verified_only_select(sql);
55905592
55915593 let sql = "SELECT * from mytable WINDOW window1 AS window2";
5592- let dialects = all_dialects_except(|d| d.is::<BigQueryDialect>() || d.is::<GenericDialect>());
5594+ let dialects = all_dialects_except(|d| {
5595+ d.is::<BigQueryDialect>()
5596+ || d.is::<GenericDialect>()
5597+ || d.is_table_alias(&Keyword::WINDOW, &mut Parser::new(d))
5598+ });
55935599 let res = dialects.parse_sql_statements(sql);
55945600 assert_eq!(
55955601 ParserError::ParserError("Expected: (, found: window2".to_string()),
@@ -5599,14 +5605,15 @@ fn parse_window_clause() {
55995605
56005606#[test]
56015607fn test_parse_named_window() {
5608+ let dialects = all_dialects_except(|d| d.is_table_alias(&Keyword::WINDOW, &mut Parser::new(d)));
56025609 let sql = "SELECT \
56035610 MIN(c12) OVER window1 AS min1, \
56045611 MAX(c12) OVER window2 AS max1 \
56055612 FROM aggregate_test_100 \
56065613 WINDOW window1 AS (ORDER BY C12), \
56075614 window2 AS (PARTITION BY C11) \
56085615 ORDER BY C3";
5609- let actual_select_only = verified_only_select(sql);
5616+ let actual_select_only = dialects. verified_only_select(sql);
56105617 let expected = Select {
56115618 select_token: AttachedToken::empty(),
56125619 distinct: None,
@@ -5755,14 +5762,18 @@ fn test_parse_named_window() {
57555762
57565763#[test]
57575764fn parse_window_and_qualify_clause() {
5765+ let dialects = all_dialects_except(|d| {
5766+ d.is_table_alias(&Keyword::WINDOW, &mut Parser::new(d))
5767+ || d.is_table_alias(&Keyword::QUALIFY, &mut Parser::new(d))
5768+ });
57585769 let sql = "SELECT \
57595770 MIN(c12) OVER window1 AS min1 \
57605771 FROM aggregate_test_100 \
57615772 QUALIFY ROW_NUMBER() OVER my_window \
57625773 WINDOW window1 AS (ORDER BY C12), \
57635774 window2 AS (PARTITION BY C11) \
57645775 ORDER BY C3";
5765- verified_only_select(sql);
5776+ dialects. verified_only_select(sql);
57665777
57675778 let sql = "SELECT \
57685779 MIN(c12) OVER window1 AS min1 \
@@ -5771,7 +5782,7 @@ fn parse_window_and_qualify_clause() {
57715782 window2 AS (PARTITION BY C11) \
57725783 QUALIFY ROW_NUMBER() OVER my_window \
57735784 ORDER BY C3";
5774- verified_only_select(sql);
5785+ dialects. verified_only_select(sql);
57755786}
57765787
57775788#[test]
@@ -7439,7 +7450,8 @@ fn parse_join_syntax_variants() {
74397450 "SELECT c1 FROM t1 FULL JOIN t2 USING(c1)",
74407451 );
74417452
7442- let res = parse_sql_statements("SELECT * FROM a OUTER JOIN b ON 1");
7453+ let dialects = all_dialects_except(|d| d.is_table_alias(&Keyword::OUTER, &mut Parser::new(d)));
7454+ let res = dialects.parse_sql_statements("SELECT * FROM a OUTER JOIN b ON 1");
74437455 assert_eq!(
74447456 ParserError::ParserError("Expected: APPLY, found: JOIN".to_string()),
74457457 res.unwrap_err()
0 commit comments