@@ -401,6 +401,7 @@ fn parse_update_set_from() {
401
401
having: None ,
402
402
named_window: vec![ ] ,
403
403
qualify: None ,
404
+ window_before_qualify: false ,
404
405
value_table_mode: None ,
405
406
connect_by: None ,
406
407
} ) ) ) ,
@@ -4546,12 +4547,34 @@ fn test_parse_named_window() {
4546
4547
) ,
4547
4548
] ,
4548
4549
qualify : None ,
4550
+ window_before_qualify : true ,
4549
4551
value_table_mode : None ,
4550
4552
connect_by : None ,
4551
4553
} ;
4552
4554
assert_eq ! ( actual_select_only, expected) ;
4553
4555
}
4554
4556
4557
+ #[ test]
4558
+ fn parse_window_and_qualify_clause ( ) {
4559
+ let sql = "SELECT \
4560
+ MIN(c12) OVER window1 AS min1 \
4561
+ FROM aggregate_test_100 \
4562
+ QUALIFY ROW_NUMBER() OVER my_window \
4563
+ WINDOW window1 AS (ORDER BY C12), \
4564
+ window2 AS (PARTITION BY C11) \
4565
+ ORDER BY C3";
4566
+ verified_only_select ( sql) ;
4567
+
4568
+ let sql = "SELECT \
4569
+ MIN(c12) OVER window1 AS min1 \
4570
+ FROM aggregate_test_100 \
4571
+ WINDOW window1 AS (ORDER BY C12), \
4572
+ window2 AS (PARTITION BY C11) \
4573
+ QUALIFY ROW_NUMBER() OVER my_window \
4574
+ ORDER BY C3";
4575
+ verified_only_select ( sql) ;
4576
+ }
4577
+
4555
4578
#[ test]
4556
4579
fn parse_window_clause_named_window ( ) {
4557
4580
let sql = "SELECT * FROM mytable WINDOW window1 AS window2" ;
@@ -4918,6 +4941,7 @@ fn parse_interval_and_or_xor() {
4918
4941
having: None ,
4919
4942
named_window: vec![ ] ,
4920
4943
qualify: None ,
4944
+ window_before_qualify: false ,
4921
4945
value_table_mode: None ,
4922
4946
connect_by: None ,
4923
4947
} ) ) ) ,
@@ -6872,6 +6896,7 @@ fn lateral_function() {
6872
6896
having : None ,
6873
6897
named_window : vec ! [ ] ,
6874
6898
qualify : None ,
6899
+ window_before_qualify : false ,
6875
6900
value_table_mode : None ,
6876
6901
connect_by : None ,
6877
6902
} ;
@@ -7516,6 +7541,7 @@ fn parse_merge() {
7516
7541
sort_by: vec![ ] ,
7517
7542
having: None ,
7518
7543
named_window: vec![ ] ,
7544
+ window_before_qualify: false ,
7519
7545
qualify: None ,
7520
7546
value_table_mode: None ,
7521
7547
connect_by: None ,
@@ -8958,6 +8984,7 @@ fn parse_unload() {
8958
8984
sort_by: vec![ ] ,
8959
8985
having: None ,
8960
8986
named_window: vec![ ] ,
8987
+ window_before_qualify: false ,
8961
8988
qualify: None ,
8962
8989
value_table_mode: None ,
8963
8990
connect_by: None ,
@@ -9112,6 +9139,7 @@ fn parse_connect_by() {
9112
9139
having : None ,
9113
9140
named_window : vec ! [ ] ,
9114
9141
qualify : None ,
9142
+ window_before_qualify : false ,
9115
9143
value_table_mode : None ,
9116
9144
connect_by : Some ( ConnectBy {
9117
9145
condition : Expr :: BinaryOp {
@@ -9199,6 +9227,7 @@ fn parse_connect_by() {
9199
9227
having: None ,
9200
9228
named_window: vec![ ] ,
9201
9229
qualify: None ,
9230
+ window_before_qualify: false ,
9202
9231
value_table_mode: None ,
9203
9232
connect_by: Some ( ConnectBy {
9204
9233
condition: Expr :: BinaryOp {
0 commit comments