@@ -25,7 +25,7 @@ use arrow_array::cast::AsArray;
25
25
use arrow_array:: timezone:: Tz ;
26
26
use arrow_array:: types:: * ;
27
27
use arrow_array:: * ;
28
- use arrow_buffer:: ArrowNativeType ;
28
+ use arrow_buffer:: { ArrowNativeType , IntervalDayTime , IntervalMonthDayNano } ;
29
29
use arrow_schema:: { ArrowError , DataType , IntervalUnit , TimeUnit } ;
30
30
31
31
use crate :: arity:: { binary, try_binary} ;
@@ -343,12 +343,12 @@ trait TimestampOp: ArrowTimestampType {
343
343
type Duration : ArrowPrimitiveType < Native = i64 > ;
344
344
345
345
fn add_year_month ( timestamp : i64 , delta : i32 , tz : Tz ) -> Option < i64 > ;
346
- fn add_day_time ( timestamp : i64 , delta : i64 , tz : Tz ) -> Option < i64 > ;
347
- fn add_month_day_nano ( timestamp : i64 , delta : i128 , tz : Tz ) -> Option < i64 > ;
346
+ fn add_day_time ( timestamp : i64 , delta : IntervalDayTime , tz : Tz ) -> Option < i64 > ;
347
+ fn add_month_day_nano ( timestamp : i64 , delta : IntervalMonthDayNano , tz : Tz ) -> Option < i64 > ;
348
348
349
349
fn sub_year_month ( timestamp : i64 , delta : i32 , tz : Tz ) -> Option < i64 > ;
350
- fn sub_day_time ( timestamp : i64 , delta : i64 , tz : Tz ) -> Option < i64 > ;
351
- fn sub_month_day_nano ( timestamp : i64 , delta : i128 , tz : Tz ) -> Option < i64 > ;
350
+ fn sub_day_time ( timestamp : i64 , delta : IntervalDayTime , tz : Tz ) -> Option < i64 > ;
351
+ fn sub_month_day_nano ( timestamp : i64 , delta : IntervalMonthDayNano , tz : Tz ) -> Option < i64 > ;
352
352
}
353
353
354
354
macro_rules! timestamp {
@@ -360,23 +360,23 @@ macro_rules! timestamp {
360
360
Self :: add_year_months( left, right, tz)
361
361
}
362
362
363
- fn add_day_time( left: i64 , right: i64 , tz: Tz ) -> Option <i64 > {
363
+ fn add_day_time( left: i64 , right: IntervalDayTime , tz: Tz ) -> Option <i64 > {
364
364
Self :: add_day_time( left, right, tz)
365
365
}
366
366
367
- fn add_month_day_nano( left: i64 , right: i128 , tz: Tz ) -> Option <i64 > {
367
+ fn add_month_day_nano( left: i64 , right: IntervalMonthDayNano , tz: Tz ) -> Option <i64 > {
368
368
Self :: add_month_day_nano( left, right, tz)
369
369
}
370
370
371
371
fn sub_year_month( left: i64 , right: i32 , tz: Tz ) -> Option <i64 > {
372
372
Self :: subtract_year_months( left, right, tz)
373
373
}
374
374
375
- fn sub_day_time( left: i64 , right: i64 , tz: Tz ) -> Option <i64 > {
375
+ fn sub_day_time( left: i64 , right: IntervalDayTime , tz: Tz ) -> Option <i64 > {
376
376
Self :: subtract_day_time( left, right, tz)
377
377
}
378
378
379
- fn sub_month_day_nano( left: i64 , right: i128 , tz: Tz ) -> Option <i64 > {
379
+ fn sub_month_day_nano( left: i64 , right: IntervalMonthDayNano , tz: Tz ) -> Option <i64 > {
380
380
Self :: subtract_month_day_nano( left, right, tz)
381
381
}
382
382
}
@@ -506,12 +506,12 @@ fn timestamp_op<T: TimestampOp>(
506
506
/// Note: these should be fallible (#4456)
507
507
trait DateOp : ArrowTemporalType {
508
508
fn add_year_month ( timestamp : Self :: Native , delta : i32 ) -> Self :: Native ;
509
- fn add_day_time ( timestamp : Self :: Native , delta : i64 ) -> Self :: Native ;
510
- fn add_month_day_nano ( timestamp : Self :: Native , delta : i128 ) -> Self :: Native ;
509
+ fn add_day_time ( timestamp : Self :: Native , delta : IntervalDayTime ) -> Self :: Native ;
510
+ fn add_month_day_nano ( timestamp : Self :: Native , delta : IntervalMonthDayNano ) -> Self :: Native ;
511
511
512
512
fn sub_year_month ( timestamp : Self :: Native , delta : i32 ) -> Self :: Native ;
513
- fn sub_day_time ( timestamp : Self :: Native , delta : i64 ) -> Self :: Native ;
514
- fn sub_month_day_nano ( timestamp : Self :: Native , delta : i128 ) -> Self :: Native ;
513
+ fn sub_day_time ( timestamp : Self :: Native , delta : IntervalDayTime ) -> Self :: Native ;
514
+ fn sub_month_day_nano ( timestamp : Self :: Native , delta : IntervalMonthDayNano ) -> Self :: Native ;
515
515
}
516
516
517
517
macro_rules! date {
@@ -521,23 +521,23 @@ macro_rules! date {
521
521
Self :: add_year_months( left, right)
522
522
}
523
523
524
- fn add_day_time( left: Self :: Native , right: i64 ) -> Self :: Native {
524
+ fn add_day_time( left: Self :: Native , right: IntervalDayTime ) -> Self :: Native {
525
525
Self :: add_day_time( left, right)
526
526
}
527
527
528
- fn add_month_day_nano( left: Self :: Native , right: i128 ) -> Self :: Native {
528
+ fn add_month_day_nano( left: Self :: Native , right: IntervalMonthDayNano ) -> Self :: Native {
529
529
Self :: add_month_day_nano( left, right)
530
530
}
531
531
532
532
fn sub_year_month( left: Self :: Native , right: i32 ) -> Self :: Native {
533
533
Self :: subtract_year_months( left, right)
534
534
}
535
535
536
- fn sub_day_time( left: Self :: Native , right: i64 ) -> Self :: Native {
536
+ fn sub_day_time( left: Self :: Native , right: IntervalDayTime ) -> Self :: Native {
537
537
Self :: subtract_day_time( left, right)
538
538
}
539
539
540
- fn sub_month_day_nano( left: Self :: Native , right: i128 ) -> Self :: Native {
540
+ fn sub_month_day_nano( left: Self :: Native , right: IntervalMonthDayNano ) -> Self :: Native {
541
541
Self :: subtract_month_day_nano( left, right)
542
542
}
543
543
}
@@ -1346,13 +1346,10 @@ mod tests {
1346
1346
IntervalMonthDayNanoType :: make_value( 35 , -19 , 41899000000000000 )
1347
1347
] )
1348
1348
) ;
1349
- let a = IntervalMonthDayNanoArray :: from ( vec ! [ i64 :: MAX as i128 ] ) ;
1350
- let b = IntervalMonthDayNanoArray :: from ( vec ! [ 1 ] ) ;
1349
+ let a = IntervalMonthDayNanoArray :: from ( vec ! [ IntervalMonthDayNano :: MAX ] ) ;
1350
+ let b = IntervalMonthDayNanoArray :: from ( vec ! [ IntervalMonthDayNano :: ONE ] ) ;
1351
1351
let err = add ( & a, & b) . unwrap_err ( ) . to_string ( ) ;
1352
- assert_eq ! (
1353
- err,
1354
- "Compute error: Overflow happened on: 9223372036854775807 + 1"
1355
- ) ;
1352
+ assert_eq ! ( err, "Compute error: Overflow happened on: 2147483647 + 1" ) ;
1356
1353
}
1357
1354
1358
1355
fn test_duration_impl < T : ArrowPrimitiveType < Native = i64 > > ( ) {
0 commit comments