From c83d378e6b27c05805b0c87dca0c7ef39c427ee0 Mon Sep 17 00:00:00 2001 From: Liang-Chi Hsieh Date: Mon, 12 Feb 2024 23:03:52 -0800 Subject: [PATCH 1/2] Propagate Error instead of panic --- arrow-select/src/take.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arrow-select/src/take.rs b/arrow-select/src/take.rs index 172e61dca7ec..76e173b36d90 100644 --- a/arrow-select/src/take.rs +++ b/arrow-select/src/take.rs @@ -420,7 +420,8 @@ fn take_bytes( nulls = Some(null_buf.into()) } - T::Offset::from_usize(values.len()).expect("offset overflow"); + T::Offset::from_usize(values.len()) + .ok_or(ArrowError::ComputeError("Offset overflow".to_string()))?; let array_data = ArrayData::builder(T::DATA_TYPE) .len(data_len) From eab3abe37254dc51fb5cb519bcb93ca0eb479c4a Mon Sep 17 00:00:00 2001 From: Liang-Chi Hsieh Date: Mon, 12 Feb 2024 23:15:59 -0800 Subject: [PATCH 2/2] Improve error message --- arrow-select/src/take.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/arrow-select/src/take.rs b/arrow-select/src/take.rs index 76e173b36d90..d9a639da8066 100644 --- a/arrow-select/src/take.rs +++ b/arrow-select/src/take.rs @@ -420,8 +420,11 @@ fn take_bytes( nulls = Some(null_buf.into()) } - T::Offset::from_usize(values.len()) - .ok_or(ArrowError::ComputeError("Offset overflow".to_string()))?; + T::Offset::from_usize(values.len()).ok_or(ArrowError::ComputeError(format!( + "Offset overflow for {}BinaryArray: {}", + T::Offset::PREFIX, + values.len() + )))?; let array_data = ArrayData::builder(T::DATA_TYPE) .len(data_len)