mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-09-01 11:47:20 +00:00
adding support for scale in CEIL and FLOOR functions (#1377)
This commit is contained in:
parent
b072ce2589
commit
c2f46ae07b
3 changed files with 113 additions and 19 deletions
|
@ -2494,6 +2494,66 @@ fn parse_floor_number() {
|
|||
verified_stmt("SELECT FLOOR(float_column) FROM my_table");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_ceil_number_scale() {
|
||||
verified_stmt("SELECT CEIL(1.5, 1)");
|
||||
verified_stmt("SELECT CEIL(float_column, 3) FROM my_table");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_floor_number_scale() {
|
||||
verified_stmt("SELECT FLOOR(1.5, 1)");
|
||||
verified_stmt("SELECT FLOOR(float_column, 3) FROM my_table");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_ceil_scale() {
|
||||
let sql = "SELECT CEIL(d, 2)";
|
||||
let select = verified_only_select(sql);
|
||||
|
||||
#[cfg(feature = "bigdecimal")]
|
||||
assert_eq!(
|
||||
&Expr::Ceil {
|
||||
expr: Box::new(Expr::Identifier(Ident::new("d"))),
|
||||
field: CeilFloorKind::Scale(Value::Number(bigdecimal::BigDecimal::from(2), false)),
|
||||
},
|
||||
expr_from_projection(only(&select.projection)),
|
||||
);
|
||||
|
||||
#[cfg(not(feature = "bigdecimal"))]
|
||||
assert_eq!(
|
||||
&Expr::Ceil {
|
||||
expr: Box::new(Expr::Identifier(Ident::new("d"))),
|
||||
field: CeilFloorKind::Scale(Value::Number(2.to_string(), false)),
|
||||
},
|
||||
expr_from_projection(only(&select.projection)),
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_floor_scale() {
|
||||
let sql = "SELECT FLOOR(d, 2)";
|
||||
let select = verified_only_select(sql);
|
||||
|
||||
#[cfg(feature = "bigdecimal")]
|
||||
assert_eq!(
|
||||
&Expr::Floor {
|
||||
expr: Box::new(Expr::Identifier(Ident::new("d"))),
|
||||
field: CeilFloorKind::Scale(Value::Number(bigdecimal::BigDecimal::from(2), false)),
|
||||
},
|
||||
expr_from_projection(only(&select.projection)),
|
||||
);
|
||||
|
||||
#[cfg(not(feature = "bigdecimal"))]
|
||||
assert_eq!(
|
||||
&Expr::Floor {
|
||||
expr: Box::new(Expr::Identifier(Ident::new("d"))),
|
||||
field: CeilFloorKind::Scale(Value::Number(2.to_string(), false)),
|
||||
},
|
||||
expr_from_projection(only(&select.projection)),
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_ceil_datetime() {
|
||||
let sql = "SELECT CEIL(d TO DAY)";
|
||||
|
@ -2501,7 +2561,7 @@ fn parse_ceil_datetime() {
|
|||
assert_eq!(
|
||||
&Expr::Ceil {
|
||||
expr: Box::new(Expr::Identifier(Ident::new("d"))),
|
||||
field: DateTimeField::Day,
|
||||
field: CeilFloorKind::DateTimeField(DateTimeField::Day),
|
||||
},
|
||||
expr_from_projection(only(&select.projection)),
|
||||
);
|
||||
|
@ -2528,7 +2588,7 @@ fn parse_floor_datetime() {
|
|||
assert_eq!(
|
||||
&Expr::Floor {
|
||||
expr: Box::new(Expr::Identifier(Ident::new("d"))),
|
||||
field: DateTimeField::Day,
|
||||
field: CeilFloorKind::DateTimeField(DateTimeField::Day),
|
||||
},
|
||||
expr_from_projection(only(&select.projection)),
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue