@@ -2649,7 +2649,7 @@ fn parse_literal_interval() {
2649
2649
let select = verified_only_select ( sql) ;
2650
2650
assert_eq ! (
2651
2651
& Expr :: Value ( Value :: Interval {
2652
- value: "1-1" . into ( ) ,
2652
+ value: Box :: new ( Expr :: Value ( Value :: SingleQuotedString ( String :: from ( "1-1" ) ) ) ) ,
2653
2653
leading_field: Some ( DateTimeField :: Year ) ,
2654
2654
leading_precision: None ,
2655
2655
last_field: Some ( DateTimeField :: Month ) ,
@@ -2662,7 +2662,9 @@ fn parse_literal_interval() {
2662
2662
let select = verified_only_select ( sql) ;
2663
2663
assert_eq ! (
2664
2664
& Expr :: Value ( Value :: Interval {
2665
- value: "01:01.01" . into( ) ,
2665
+ value: Box :: new( Expr :: Value ( Value :: SingleQuotedString ( String :: from(
2666
+ "01:01.01"
2667
+ ) ) ) ) ,
2666
2668
leading_field: Some ( DateTimeField :: Minute ) ,
2667
2669
leading_precision: Some ( 5 ) ,
2668
2670
last_field: Some ( DateTimeField :: Second ) ,
@@ -2675,7 +2677,7 @@ fn parse_literal_interval() {
2675
2677
let select = verified_only_select ( sql) ;
2676
2678
assert_eq ! (
2677
2679
& Expr :: Value ( Value :: Interval {
2678
- value: "1" . into ( ) ,
2680
+ value: Box :: new ( Expr :: Value ( Value :: SingleQuotedString ( String :: from ( "1" ) ) ) ) ,
2679
2681
leading_field: Some ( DateTimeField :: Second ) ,
2680
2682
leading_precision: Some ( 5 ) ,
2681
2683
last_field: None ,
@@ -2688,7 +2690,7 @@ fn parse_literal_interval() {
2688
2690
let select = verified_only_select ( sql) ;
2689
2691
assert_eq ! (
2690
2692
& Expr :: Value ( Value :: Interval {
2691
- value: "10" . into ( ) ,
2693
+ value: Box :: new ( Expr :: Value ( Value :: SingleQuotedString ( String :: from ( "10" ) ) ) ) ,
2692
2694
leading_field: Some ( DateTimeField :: Hour ) ,
2693
2695
leading_precision: None ,
2694
2696
last_field: None ,
@@ -2697,11 +2699,41 @@ fn parse_literal_interval() {
2697
2699
expr_from_projection( only( & select. projection) ) ,
2698
2700
) ;
2699
2701
2702
+ let sql = "SELECT INTERVAL 5 DAY" ;
2703
+ let select = verified_only_select ( sql) ;
2704
+ assert_eq ! (
2705
+ & Expr :: Value ( Value :: Interval {
2706
+ value: Box :: new( Expr :: Value ( number( "5" ) ) ) ,
2707
+ leading_field: Some ( DateTimeField :: Day ) ,
2708
+ leading_precision: None ,
2709
+ last_field: None ,
2710
+ fractional_seconds_precision: None ,
2711
+ } ) ,
2712
+ expr_from_projection( only( & select. projection) ) ,
2713
+ ) ;
2714
+
2715
+ let sql = "SELECT INTERVAL 1 + 1 DAY" ;
2716
+ let select = verified_only_select ( sql) ;
2717
+ assert_eq ! (
2718
+ & Expr :: Value ( Value :: Interval {
2719
+ value: Box :: new( Expr :: BinaryOp {
2720
+ left: Box :: new( Expr :: Value ( number( "1" ) ) ) ,
2721
+ op: BinaryOperator :: Plus ,
2722
+ right: Box :: new( Expr :: Value ( number( "1" ) ) )
2723
+ } ) ,
2724
+ leading_field: Some ( DateTimeField :: Day ) ,
2725
+ leading_precision: None ,
2726
+ last_field: None ,
2727
+ fractional_seconds_precision: None ,
2728
+ } ) ,
2729
+ expr_from_projection( only( & select. projection) ) ,
2730
+ ) ;
2731
+
2700
2732
let sql = "SELECT INTERVAL '10' HOUR (1)" ;
2701
2733
let select = verified_only_select ( sql) ;
2702
2734
assert_eq ! (
2703
2735
& Expr :: Value ( Value :: Interval {
2704
- value: "10" . into ( ) ,
2736
+ value: Box :: new ( Expr :: Value ( Value :: SingleQuotedString ( String :: from ( "10" ) ) ) ) ,
2705
2737
leading_field: Some ( DateTimeField :: Hour ) ,
2706
2738
leading_precision: Some ( 1 ) ,
2707
2739
last_field: None ,
@@ -2714,7 +2746,9 @@ fn parse_literal_interval() {
2714
2746
let select = verified_only_select ( sql) ;
2715
2747
assert_eq ! (
2716
2748
& Expr :: Value ( Value :: Interval {
2717
- value: "1 DAY" . into( ) ,
2749
+ value: Box :: new( Expr :: Value ( Value :: SingleQuotedString ( String :: from(
2750
+ "1 DAY"
2751
+ ) ) ) ) ,
2718
2752
leading_field: None ,
2719
2753
leading_precision: None ,
2720
2754
last_field: None ,
0 commit comments