Skip to content

Commit e99fa43

Browse files
gzsomborms705
authored andcommitted
Fix test for generic function parsing
1 parent ba7b656 commit e99fa43

1 file changed

Lines changed: 41 additions & 13 deletions

File tree

src/select.rs

Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ pub fn nested_selection(i: &[u8]) -> IResult<&[u8], SelectStatement> {
310310
mod 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

Comments
 (0)