@@ -5549,7 +5549,8 @@ fn parse_named_window_functions() {
55495549 WINDOW w AS (PARTITION BY x), win AS (ORDER BY y)";
55505550 supported_dialects.verified_stmt(sql);
55515551
5552- let select = verified_only_select(sql);
5552+ let select = all_dialects_except(|d| d.is_table_alias(&Keyword::WINDOW, &mut Parser::new(d)))
5553+ .verified_only_select(sql);
55535554
55545555 const EXPECTED_PROJ_QTY: usize = 2;
55555556 assert_eq!(EXPECTED_PROJ_QTY, select.projection.len());
@@ -5579,6 +5580,7 @@ fn parse_named_window_functions() {
55795580
55805581#[test]
55815582fn parse_window_clause() {
5583+ let dialects = all_dialects_except(|d| d.is_table_alias(&Keyword::WINDOW, &mut Parser::new(d)));
55825584 let sql = "SELECT * \
55835585 FROM mytable \
55845586 WINDOW \
@@ -5591,10 +5593,14 @@ fn parse_window_clause() {
55915593 window7 AS (window1 ROWS UNBOUNDED PRECEDING), \
55925594 window8 AS (window1 PARTITION BY a ORDER BY b ROWS UNBOUNDED PRECEDING) \
55935595 ORDER BY C3";
5594- verified_only_select(sql);
5596+ dialects. verified_only_select(sql);
55955597
55965598 let sql = "SELECT * from mytable WINDOW window1 AS window2";
5597- let dialects = all_dialects_except(|d| d.is::<BigQueryDialect>() || d.is::<GenericDialect>());
5599+ let dialects = all_dialects_except(|d| {
5600+ d.is::<BigQueryDialect>()
5601+ || d.is::<GenericDialect>()
5602+ || d.is_table_alias(&Keyword::WINDOW, &mut Parser::new(d))
5603+ });
55985604 let res = dialects.parse_sql_statements(sql);
55995605 assert_eq!(
56005606 ParserError::ParserError("Expected: (, found: window2".to_string()),
@@ -5604,14 +5610,15 @@ fn parse_window_clause() {
56045610
56055611#[test]
56065612fn test_parse_named_window() {
5613+ let dialects = all_dialects_except(|d| d.is_table_alias(&Keyword::WINDOW, &mut Parser::new(d)));
56075614 let sql = "SELECT \
56085615 MIN(c12) OVER window1 AS min1, \
56095616 MAX(c12) OVER window2 AS max1 \
56105617 FROM aggregate_test_100 \
56115618 WINDOW window1 AS (ORDER BY C12), \
56125619 window2 AS (PARTITION BY C11) \
56135620 ORDER BY C3";
5614- let actual_select_only = verified_only_select(sql);
5621+ let actual_select_only = dialects. verified_only_select(sql);
56155622 let expected = Select {
56165623 select_token: AttachedToken::empty(),
56175624 distinct: None,
@@ -5760,14 +5767,18 @@ fn test_parse_named_window() {
57605767
57615768#[test]
57625769fn parse_window_and_qualify_clause() {
5770+ let dialects = all_dialects_except(|d| {
5771+ d.is_table_alias(&Keyword::WINDOW, &mut Parser::new(d))
5772+ || d.is_table_alias(&Keyword::QUALIFY, &mut Parser::new(d))
5773+ });
57635774 let sql = "SELECT \
57645775 MIN(c12) OVER window1 AS min1 \
57655776 FROM aggregate_test_100 \
57665777 QUALIFY ROW_NUMBER() OVER my_window \
57675778 WINDOW window1 AS (ORDER BY C12), \
57685779 window2 AS (PARTITION BY C11) \
57695780 ORDER BY C3";
5770- verified_only_select(sql);
5781+ dialects. verified_only_select(sql);
57715782
57725783 let sql = "SELECT \
57735784 MIN(c12) OVER window1 AS min1 \
@@ -5776,7 +5787,7 @@ fn parse_window_and_qualify_clause() {
57765787 window2 AS (PARTITION BY C11) \
57775788 QUALIFY ROW_NUMBER() OVER my_window \
57785789 ORDER BY C3";
5779- verified_only_select(sql);
5790+ dialects. verified_only_select(sql);
57805791}
57815792
57825793#[test]
@@ -7444,7 +7455,8 @@ fn parse_join_syntax_variants() {
74447455 "SELECT c1 FROM t1 FULL JOIN t2 USING(c1)",
74457456 );
74467457
7447- let res = parse_sql_statements("SELECT * FROM a OUTER JOIN b ON 1");
7458+ let dialects = all_dialects_except(|d| d.is_table_alias(&Keyword::OUTER, &mut Parser::new(d)));
7459+ let res = dialects.parse_sql_statements("SELECT * FROM a OUTER JOIN b ON 1");
74487460 assert_eq!(
74497461 ParserError::ParserError("Expected: APPLY, found: JOIN".to_string()),
74507462 res.unwrap_err()
0 commit comments