mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-07-15 04:24:59 +00:00
Move Value::Interval
to Expr::Interval
(#609)
* refactor(value): convert Value::Interval to Expr::Interval * test(sqlparser_common): modify test case * refactor(parser): rename func parse_interval * refactor(tests) rename parse_interval test func
This commit is contained in:
parent
d971a029dd
commit
3ac1bb5b80
4 changed files with 81 additions and 83 deletions
|
@ -2930,24 +2930,24 @@ fn parse_literal_timestamp_with_time_zone() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
fn parse_literal_interval() {
|
||||
fn parse_interval() {
|
||||
let sql = "SELECT INTERVAL '1-1' YEAR TO MONTH";
|
||||
let select = verified_only_select(sql);
|
||||
assert_eq!(
|
||||
&Expr::Value(Value::Interval {
|
||||
&Expr::Interval {
|
||||
value: Box::new(Expr::Value(Value::SingleQuotedString(String::from("1-1")))),
|
||||
leading_field: Some(DateTimeField::Year),
|
||||
leading_precision: None,
|
||||
last_field: Some(DateTimeField::Month),
|
||||
fractional_seconds_precision: None,
|
||||
}),
|
||||
},
|
||||
expr_from_projection(only(&select.projection)),
|
||||
);
|
||||
|
||||
let sql = "SELECT INTERVAL '01:01.01' MINUTE (5) TO SECOND (5)";
|
||||
let select = verified_only_select(sql);
|
||||
assert_eq!(
|
||||
&Expr::Value(Value::Interval {
|
||||
&Expr::Interval {
|
||||
value: Box::new(Expr::Value(Value::SingleQuotedString(String::from(
|
||||
"01:01.01"
|
||||
)))),
|
||||
|
@ -2955,53 +2955,53 @@ fn parse_literal_interval() {
|
|||
leading_precision: Some(5),
|
||||
last_field: Some(DateTimeField::Second),
|
||||
fractional_seconds_precision: Some(5),
|
||||
}),
|
||||
},
|
||||
expr_from_projection(only(&select.projection)),
|
||||
);
|
||||
|
||||
let sql = "SELECT INTERVAL '1' SECOND (5, 4)";
|
||||
let select = verified_only_select(sql);
|
||||
assert_eq!(
|
||||
&Expr::Value(Value::Interval {
|
||||
&Expr::Interval {
|
||||
value: Box::new(Expr::Value(Value::SingleQuotedString(String::from("1")))),
|
||||
leading_field: Some(DateTimeField::Second),
|
||||
leading_precision: Some(5),
|
||||
last_field: None,
|
||||
fractional_seconds_precision: Some(4),
|
||||
}),
|
||||
},
|
||||
expr_from_projection(only(&select.projection)),
|
||||
);
|
||||
|
||||
let sql = "SELECT INTERVAL '10' HOUR";
|
||||
let select = verified_only_select(sql);
|
||||
assert_eq!(
|
||||
&Expr::Value(Value::Interval {
|
||||
&Expr::Interval {
|
||||
value: Box::new(Expr::Value(Value::SingleQuotedString(String::from("10")))),
|
||||
leading_field: Some(DateTimeField::Hour),
|
||||
leading_precision: None,
|
||||
last_field: None,
|
||||
fractional_seconds_precision: None,
|
||||
}),
|
||||
},
|
||||
expr_from_projection(only(&select.projection)),
|
||||
);
|
||||
|
||||
let sql = "SELECT INTERVAL 5 DAY";
|
||||
let select = verified_only_select(sql);
|
||||
assert_eq!(
|
||||
&Expr::Value(Value::Interval {
|
||||
&Expr::Interval {
|
||||
value: Box::new(Expr::Value(number("5"))),
|
||||
leading_field: Some(DateTimeField::Day),
|
||||
leading_precision: None,
|
||||
last_field: None,
|
||||
fractional_seconds_precision: None,
|
||||
}),
|
||||
},
|
||||
expr_from_projection(only(&select.projection)),
|
||||
);
|
||||
|
||||
let sql = "SELECT INTERVAL 1 + 1 DAY";
|
||||
let select = verified_only_select(sql);
|
||||
assert_eq!(
|
||||
&Expr::Value(Value::Interval {
|
||||
&Expr::Interval {
|
||||
value: Box::new(Expr::BinaryOp {
|
||||
left: Box::new(Expr::Value(number("1"))),
|
||||
op: BinaryOperator::Plus,
|
||||
|
@ -3011,27 +3011,27 @@ fn parse_literal_interval() {
|
|||
leading_precision: None,
|
||||
last_field: None,
|
||||
fractional_seconds_precision: None,
|
||||
}),
|
||||
},
|
||||
expr_from_projection(only(&select.projection)),
|
||||
);
|
||||
|
||||
let sql = "SELECT INTERVAL '10' HOUR (1)";
|
||||
let select = verified_only_select(sql);
|
||||
assert_eq!(
|
||||
&Expr::Value(Value::Interval {
|
||||
&Expr::Interval {
|
||||
value: Box::new(Expr::Value(Value::SingleQuotedString(String::from("10")))),
|
||||
leading_field: Some(DateTimeField::Hour),
|
||||
leading_precision: Some(1),
|
||||
last_field: None,
|
||||
fractional_seconds_precision: None,
|
||||
}),
|
||||
},
|
||||
expr_from_projection(only(&select.projection)),
|
||||
);
|
||||
|
||||
let sql = "SELECT INTERVAL '1 DAY'";
|
||||
let select = verified_only_select(sql);
|
||||
assert_eq!(
|
||||
&Expr::Value(Value::Interval {
|
||||
&Expr::Interval {
|
||||
value: Box::new(Expr::Value(Value::SingleQuotedString(String::from(
|
||||
"1 DAY"
|
||||
)))),
|
||||
|
@ -3039,7 +3039,7 @@ fn parse_literal_interval() {
|
|||
leading_precision: None,
|
||||
last_field: None,
|
||||
fractional_seconds_precision: None,
|
||||
}),
|
||||
},
|
||||
expr_from_projection(only(&select.projection)),
|
||||
);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue