@@ -310,7 +310,7 @@ pub fn nested_selection(i: &[u8]) -> IResult<&[u8], SelectStatement> {
310310mod tests {
311311 use super :: * ;
312312 use case:: { CaseWhenExpression , ColumnOrLiteral } ;
313- use column:: { Column , FunctionArgument , FunctionExpression } ;
313+ use column:: { Column , FunctionArgument , FunctionArguments , FunctionExpression } ;
314314 use common:: {
315315 FieldDefinitionExpression , FieldValueExpression , ItemPlaceholder , Literal , Operator ,
316316 } ;
@@ -972,27 +972,55 @@ mod tests {
972972
973973 #[ test]
974974 fn generic_function_query ( ) {
975- let qstring = "SELECT coalesce(a, b,c),d FROM sometable;" ;
975+ let qstring = "SELECT coalesce(a, b,c) as x ,d FROM sometable;" ;
976976
977977 let res = selection ( qstring. as_bytes ( ) ) ;
978- let agg_expr = FunctionExpression :: CountStar ;
978+ let agg_expr = FunctionExpression :: Generic (
979+ String :: from ( "coalesce" ) ,
980+ FunctionArguments {
981+ arguments : vec ! [
982+ FunctionArgument :: Column ( Column {
983+ name: String :: from( "a" ) ,
984+ alias: None ,
985+ table: None ,
986+ function: None ,
987+ } ) ,
988+ FunctionArgument :: Column ( Column {
989+ name: String :: from( "b" ) ,
990+ alias: None ,
991+ table: None ,
992+ function: None ,
993+ } ) ,
994+ FunctionArgument :: Column ( Column {
995+ name: String :: from( "c" ) ,
996+ alias: None ,
997+ table: None ,
998+ function: None ,
999+ } ) ,
1000+ ] ,
1001+ } ,
1002+ ) ;
9791003 let expected_stmt = SelectStatement {
9801004 tables : vec ! [ Table :: from( "sometable" ) ] ,
981- fields : vec ! [ FieldDefinitionExpression :: Col ( Column {
982- name: String :: from( "count(*)" ) ,
983- alias: None ,
984- table: None ,
985- function: Some ( Box :: new( agg_expr) ) ,
986- } ) , FieldDefinitionExpression :: Col ( Column {
987- name: String :: from( "d" ) ,
988- ..Default :: default ( )
989- } ) ] ,
1005+ fields : vec ! [
1006+ FieldDefinitionExpression :: Col ( Column {
1007+ name: String :: from( "x" ) ,
1008+ alias: Some ( String :: from( "x" ) ) ,
1009+ table: None ,
1010+ function: Some ( Box :: new( agg_expr) ) ,
1011+ } ) ,
1012+ FieldDefinitionExpression :: Col ( Column {
1013+ name: String :: from( "d" ) ,
1014+ alias: None ,
1015+ table: None ,
1016+ function: None ,
1017+ } ) ,
1018+ ] ,
9901019 ..Default :: default ( )
9911020 } ;
9921021 assert_eq ! ( res. unwrap( ) . 1 , expected_stmt) ;
9931022 }
9941023
995-
9961024 #[ test]
9971025 fn moderately_complex_selection ( ) {
9981026 let qstring = "SELECT * FROM item, author WHERE item.i_a_id = author.a_id AND \
0 commit comments