@@ -401,6 +401,7 @@ fn parse_update_set_from() {
401401 having: None ,
402402 named_window: vec![ ] ,
403403 qualify: None ,
404+ window_before_qualify: false ,
404405 value_table_mode: None ,
405406 connect_by: None ,
406407 } ) ) ) ,
@@ -4546,12 +4547,34 @@ fn test_parse_named_window() {
45464547 ) ,
45474548 ] ,
45484549 qualify : None ,
4550+ window_before_qualify : true ,
45494551 value_table_mode : None ,
45504552 connect_by : None ,
45514553 } ;
45524554 assert_eq ! ( actual_select_only, expected) ;
45534555}
45544556
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+
45554578#[ test]
45564579fn parse_window_clause_named_window ( ) {
45574580 let sql = "SELECT * FROM mytable WINDOW window1 AS window2" ;
@@ -4918,6 +4941,7 @@ fn parse_interval_and_or_xor() {
49184941 having: None ,
49194942 named_window: vec![ ] ,
49204943 qualify: None ,
4944+ window_before_qualify: false ,
49214945 value_table_mode: None ,
49224946 connect_by: None ,
49234947 } ) ) ) ,
@@ -6872,6 +6896,7 @@ fn lateral_function() {
68726896 having : None ,
68736897 named_window : vec ! [ ] ,
68746898 qualify : None ,
6899+ window_before_qualify : false ,
68756900 value_table_mode : None ,
68766901 connect_by : None ,
68776902 } ;
@@ -7516,6 +7541,7 @@ fn parse_merge() {
75167541 sort_by: vec![ ] ,
75177542 having: None ,
75187543 named_window: vec![ ] ,
7544+ window_before_qualify: false ,
75197545 qualify: None ,
75207546 value_table_mode: None ,
75217547 connect_by: None ,
@@ -8958,6 +8984,7 @@ fn parse_unload() {
89588984 sort_by: vec![ ] ,
89598985 having: None ,
89608986 named_window: vec![ ] ,
8987+ window_before_qualify: false ,
89618988 qualify: None ,
89628989 value_table_mode: None ,
89638990 connect_by: None ,
@@ -9112,6 +9139,7 @@ fn parse_connect_by() {
91129139 having : None ,
91139140 named_window : vec ! [ ] ,
91149141 qualify : None ,
9142+ window_before_qualify : false ,
91159143 value_table_mode : None ,
91169144 connect_by : Some ( ConnectBy {
91179145 condition : Expr :: BinaryOp {
@@ -9199,6 +9227,7 @@ fn parse_connect_by() {
91999227 having: None ,
92009228 named_window: vec![ ] ,
92019229 qualify: None ,
9230+ window_before_qualify: false ,
92029231 value_table_mode: None ,
92039232 connect_by: Some ( ConnectBy {
92049233 condition: Expr :: BinaryOp {
0 commit comments