Skip to content

Commit efa5781

Browse files
author
Jiayu Liu
committed
handle i64::MIN
1 parent 8b8bd9e commit efa5781

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

arrow/src/compute/kernels/window.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ where
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();

0 commit comments

Comments
 (0)