File tree Expand file tree Collapse file tree 1 file changed +9
-1
lines changed
arrow/src/compute/kernels Expand file tree Collapse file tree 1 file changed +9
-1
lines changed Original file line number Diff line number Diff line change 6060 let value_len = values. len ( ) as i64 ;
6161 if offset == 0 {
6262 Ok ( values. slice ( 0 , values. len ( ) ) )
63- } else if abs ( offset) >= value_len {
63+ } else if abs ( offset) >= value_len || offset == i64 :: MIN {
6464 Ok ( new_null_array ( & T :: DATA_TYPE , values. len ( ) ) )
6565 } else {
6666 let slice_offset = clamp ( -offset, 0 , value_len) as usize ;
@@ -125,6 +125,14 @@ mod tests {
125125 assert_eq ! ( res. as_ref( ) , & expected) ;
126126 }
127127
128+ #[ test]
129+ fn test_shift_boundary_neg ( ) {
130+ let a: Int32Array = vec ! [ Some ( 1 ) , None , Some ( 4 ) ] . into ( ) ;
131+ let res = shift ( & a, i64:: MIN ) . unwrap ( ) ;
132+ let expected: Int32Array = vec ! [ None , None , None ] . into ( ) ;
133+ assert_eq ! ( res. as_ref( ) , & expected) ;
134+ }
135+
128136 #[ test]
129137 fn test_shift_large_pos ( ) {
130138 let a: Int32Array = vec ! [ Some ( 1 ) , None , Some ( 4 ) ] . into ( ) ;
You can’t perform that action at this time.
0 commit comments