@@ -1459,7 +1459,7 @@ fn parse_literal_interval() {
1459
1459
assert_eq ! (
1460
1460
& Expr :: Value ( Value :: Interval {
1461
1461
value: "1-1" . into( ) ,
1462
- leading_field: DateTimeField :: Year ,
1462
+ leading_field: Some ( DateTimeField :: Year ) ,
1463
1463
leading_precision: None ,
1464
1464
last_field: Some ( DateTimeField :: Month ) ,
1465
1465
fractional_seconds_precision: None ,
@@ -1472,7 +1472,7 @@ fn parse_literal_interval() {
1472
1472
assert_eq ! (
1473
1473
& Expr :: Value ( Value :: Interval {
1474
1474
value: "01:01.01" . into( ) ,
1475
- leading_field: DateTimeField :: Minute ,
1475
+ leading_field: Some ( DateTimeField :: Minute ) ,
1476
1476
leading_precision: Some ( 5 ) ,
1477
1477
last_field: Some ( DateTimeField :: Second ) ,
1478
1478
fractional_seconds_precision: Some ( 5 ) ,
@@ -1485,7 +1485,7 @@ fn parse_literal_interval() {
1485
1485
assert_eq ! (
1486
1486
& Expr :: Value ( Value :: Interval {
1487
1487
value: "1" . into( ) ,
1488
- leading_field: DateTimeField :: Second ,
1488
+ leading_field: Some ( DateTimeField :: Second ) ,
1489
1489
leading_precision: Some ( 5 ) ,
1490
1490
last_field: None ,
1491
1491
fractional_seconds_precision: Some ( 4 ) ,
@@ -1498,7 +1498,7 @@ fn parse_literal_interval() {
1498
1498
assert_eq ! (
1499
1499
& Expr :: Value ( Value :: Interval {
1500
1500
value: "10" . into( ) ,
1501
- leading_field: DateTimeField :: Hour ,
1501
+ leading_field: Some ( DateTimeField :: Hour ) ,
1502
1502
leading_precision: None ,
1503
1503
last_field: None ,
1504
1504
fractional_seconds_precision: None ,
@@ -1511,14 +1511,27 @@ fn parse_literal_interval() {
1511
1511
assert_eq ! (
1512
1512
& Expr :: Value ( Value :: Interval {
1513
1513
value: "10" . into( ) ,
1514
- leading_field: DateTimeField :: Hour ,
1514
+ leading_field: Some ( DateTimeField :: Hour ) ,
1515
1515
leading_precision: Some ( 1 ) ,
1516
1516
last_field: None ,
1517
1517
fractional_seconds_precision: None ,
1518
1518
} ) ,
1519
1519
expr_from_projection( only( & select. projection) ) ,
1520
1520
) ;
1521
1521
1522
+ let sql = "SELECT INTERVAL '1 DAY'" ;
1523
+ let select = verified_only_select ( sql) ;
1524
+ assert_eq ! (
1525
+ & Expr :: Value ( Value :: Interval {
1526
+ value: "1 DAY" . into( ) ,
1527
+ leading_field: None ,
1528
+ leading_precision: None ,
1529
+ last_field: None ,
1530
+ fractional_seconds_precision: None ,
1531
+ } ) ,
1532
+ expr_from_projection( only( & select. projection) ) ,
1533
+ ) ;
1534
+
1522
1535
let result = parse_sql_statements ( "SELECT INTERVAL '1' SECOND TO SECOND" ) ;
1523
1536
assert_eq ! (
1524
1537
ParserError :: ParserError ( "Expected end of statement, found: SECOND" . to_string( ) ) ,
@@ -1544,6 +1557,12 @@ fn parse_literal_interval() {
1544
1557
verified_only_select ( "SELECT INTERVAL '1' HOUR TO MINUTE" ) ;
1545
1558
verified_only_select ( "SELECT INTERVAL '1' HOUR TO SECOND" ) ;
1546
1559
verified_only_select ( "SELECT INTERVAL '1' MINUTE TO SECOND" ) ;
1560
+ verified_only_select ( "SELECT INTERVAL '1 YEAR'" ) ;
1561
+ verified_only_select ( "SELECT INTERVAL '1 YEAR' AS one_year" ) ;
1562
+ one_statement_parses_to (
1563
+ "SELECT INTERVAL '1 YEAR' one_year" ,
1564
+ "SELECT INTERVAL '1 YEAR' AS one_year" ,
1565
+ ) ;
1547
1566
}
1548
1567
1549
1568
#[ test]
0 commit comments