@@ -5548,7 +5548,8 @@ fn parse_named_window_functions() {
55485548 WINDOW w AS (PARTITION BY x), win AS (ORDER BY y)";
55495549 supported_dialects.verified_stmt(sql);
55505550
5551- let select = verified_only_select(sql);
5551+ let select = all_dialects_except(|d| d.is_table_alias(&Keyword::WINDOW, &mut Parser::new(d)))
5552+ .verified_only_select(sql);
55525553
55535554 const EXPECTED_PROJ_QTY: usize = 2;
55545555 assert_eq!(EXPECTED_PROJ_QTY, select.projection.len());
@@ -5578,6 +5579,7 @@ fn parse_named_window_functions() {
55785579
55795580#[test]
55805581fn parse_window_clause() {
5582+ let dialects = all_dialects_except(|d| d.is_table_alias(&Keyword::WINDOW, &mut Parser::new(d)));
55815583 let sql = "SELECT * \
55825584 FROM mytable \
55835585 WINDOW \
@@ -5590,10 +5592,14 @@ fn parse_window_clause() {
55905592 window7 AS (window1 ROWS UNBOUNDED PRECEDING), \
55915593 window8 AS (window1 PARTITION BY a ORDER BY b ROWS UNBOUNDED PRECEDING) \
55925594 ORDER BY C3";
5593- verified_only_select(sql);
5595+ dialects. verified_only_select(sql);
55945596
55955597 let sql = "SELECT * from mytable WINDOW window1 AS window2";
5596- let dialects = all_dialects_except(|d| d.is::<BigQueryDialect>() || d.is::<GenericDialect>());
5598+ let dialects = all_dialects_except(|d| {
5599+ d.is::<BigQueryDialect>()
5600+ || d.is::<GenericDialect>()
5601+ || d.is_table_alias(&Keyword::WINDOW, &mut Parser::new(d))
5602+ });
55975603 let res = dialects.parse_sql_statements(sql);
55985604 assert_eq!(
55995605 ParserError::ParserError("Expected: (, found: window2".to_string()),
@@ -5603,14 +5609,15 @@ fn parse_window_clause() {
56035609
56045610#[test]
56055611fn test_parse_named_window() {
5612+ let dialects = all_dialects_except(|d| d.is_table_alias(&Keyword::WINDOW, &mut Parser::new(d)));
56065613 let sql = "SELECT \
56075614 MIN(c12) OVER window1 AS min1, \
56085615 MAX(c12) OVER window2 AS max1 \
56095616 FROM aggregate_test_100 \
56105617 WINDOW window1 AS (ORDER BY C12), \
56115618 window2 AS (PARTITION BY C11) \
56125619 ORDER BY C3";
5613- let actual_select_only = verified_only_select(sql);
5620+ let actual_select_only = dialects. verified_only_select(sql);
56145621 let expected = Select {
56155622 select_token: AttachedToken::empty(),
56165623 distinct: None,
@@ -5759,14 +5766,18 @@ fn test_parse_named_window() {
57595766
57605767#[test]
57615768fn parse_window_and_qualify_clause() {
5769+ let dialects = all_dialects_except(|d| {
5770+ d.is_table_alias(&Keyword::WINDOW, &mut Parser::new(d))
5771+ || d.is_table_alias(&Keyword::QUALIFY, &mut Parser::new(d))
5772+ });
57625773 let sql = "SELECT \
57635774 MIN(c12) OVER window1 AS min1 \
57645775 FROM aggregate_test_100 \
57655776 QUALIFY ROW_NUMBER() OVER my_window \
57665777 WINDOW window1 AS (ORDER BY C12), \
57675778 window2 AS (PARTITION BY C11) \
57685779 ORDER BY C3";
5769- verified_only_select(sql);
5780+ dialects. verified_only_select(sql);
57705781
57715782 let sql = "SELECT \
57725783 MIN(c12) OVER window1 AS min1 \
@@ -5775,7 +5786,7 @@ fn parse_window_and_qualify_clause() {
57755786 window2 AS (PARTITION BY C11) \
57765787 QUALIFY ROW_NUMBER() OVER my_window \
57775788 ORDER BY C3";
5778- verified_only_select(sql);
5789+ dialects. verified_only_select(sql);
57795790}
57805791
57815792#[test]
@@ -7443,7 +7454,8 @@ fn parse_join_syntax_variants() {
74437454 "SELECT c1 FROM t1 FULL JOIN t2 USING(c1)",
74447455 );
74457456
7446- let res = parse_sql_statements("SELECT * FROM a OUTER JOIN b ON 1");
7457+ let dialects = all_dialects_except(|d| d.is_table_alias(&Keyword::OUTER, &mut Parser::new(d)));
7458+ let res = dialects.parse_sql_statements("SELECT * FROM a OUTER JOIN b ON 1");
74477459 assert_eq!(
74487460 ParserError::ParserError("Expected: APPLY, found: JOIN".to_string()),
74497461 res.unwrap_err()
0 commit comments