@@ -197,6 +197,27 @@ fn parse_select_count_wildcard() {
197197 name: SQLObjectName ( vec![ "COUNT" . to_string( ) ] ) ,
198198 args: vec![ ASTNode :: SQLWildcard ] ,
199199 over: None ,
200+ distinct: false ,
201+ all: false ,
202+ } ,
203+ expr_from_projection( only( & select. projection) )
204+ ) ;
205+ }
206+
207+ #[ test]
208+ fn parse_select_count_distinct ( ) {
209+ let sql = "SELECT COUNT(DISTINCT + x) FROM customer" ;
210+ let select = verified_only_select ( sql) ;
211+ assert_eq ! (
212+ & ASTNode :: SQLFunction {
213+ name: SQLObjectName ( vec![ "COUNT" . to_string( ) ] ) ,
214+ args: vec![ ASTNode :: SQLUnary {
215+ operator: SQLOperator :: Plus ,
216+ expr: Box :: new( ASTNode :: SQLIdentifier ( "x" . to_string( ) ) )
217+ } ] ,
218+ over: None ,
219+ distinct: true ,
220+ all: false ,
200221 } ,
201222 expr_from_projection( only( & select. projection) )
202223 ) ;
@@ -662,6 +683,8 @@ fn parse_scalar_function_in_projection() {
662683 name: SQLObjectName ( vec![ "sqrt" . to_string( ) ] ) ,
663684 args: vec![ ASTNode :: SQLIdentifier ( "id" . to_string( ) ) ] ,
664685 over: None ,
686+ all: false ,
687+ distinct: false ,
665688 } ,
666689 expr_from_projection( only( & select. projection) )
667690 ) ;
@@ -690,7 +713,9 @@ fn parse_window_functions() {
690713 asc: Some ( false )
691714 } ] ,
692715 window_frame: None ,
693- } )
716+ } ) ,
717+ all: false ,
718+ distinct: false ,
694719 } ,
695720 expr_from_projection( & select. projection[ 0 ] )
696721 ) ;
@@ -762,6 +787,8 @@ fn parse_delimited_identifiers() {
762787 name: SQLObjectName ( vec![ r#""myfun""# . to_string( ) ] ) ,
763788 args: vec![ ] ,
764789 over: None ,
790+ all: false ,
791+ distinct: false ,
765792 } ,
766793 expr_from_projection( & select. projection[ 1 ] ) ,
767794 ) ;
0 commit comments