From 23aacb4e7ac5d11c9b756f542dd9405b94f30a09 Mon Sep 17 00:00:00 2001 From: Robert Kruszewski Date: Thu, 16 Jul 2026 01:17:26 +0100 Subject: [PATCH 1/2] ListArray::reset_offsets doesn't need to revalidate array after reset Signed-off-by: Robert Kruszewski --- vortex-array/src/arrays/list/array.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vortex-array/src/arrays/list/array.rs b/vortex-array/src/arrays/list/array.rs index dbe2943fc51..c247dc6e86e 100644 --- a/vortex-array/src/arrays/list/array.rs +++ b/vortex-array/src/arrays/list/array.rs @@ -28,6 +28,7 @@ use crate::array::child_to_validity; use crate::array::validity_to_child; use crate::arrays::ConstantArray; use crate::arrays::List; +use crate::arrays::ListArray; use crate::arrays::Primitive; use crate::builtins::ArrayBuiltins; use crate::dtype::DType; @@ -338,7 +339,6 @@ pub trait ListArrayExt: TypedArrayRef { let mut elements = self.sliced_elements()?; if recurse && elements.is_canonical() { let compacted = elements - .clone() .execute::(ctx)? .compact(ctx)? .into_array(); @@ -357,7 +357,7 @@ pub trait ListArrayExt: TypedArrayRef { Operator::Sub, )?; - Array::::try_new(elements, adjusted_offsets, self.list_validity()) + Ok(unsafe { ListArray::new_unchecked(elements, adjusted_offsets, self.list_validity()) }) } } impl> ListArrayExt for T {} From 676c05b5e15ddebcdca8997b7f269f605b414be0 Mon Sep 17 00:00:00 2001 From: Robert Kruszewski Date: Thu, 16 Jul 2026 01:54:12 +0100 Subject: [PATCH 2/2] Update array.rs Signed-off-by: Robert Kruszewski --- vortex-array/src/arrays/list/array.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/vortex-array/src/arrays/list/array.rs b/vortex-array/src/arrays/list/array.rs index c247dc6e86e..8350b1a3558 100644 --- a/vortex-array/src/arrays/list/array.rs +++ b/vortex-array/src/arrays/list/array.rs @@ -357,6 +357,7 @@ pub trait ListArrayExt: TypedArrayRef { Operator::Sub, )?; + // SAFETY: By resetting the offsets we simply "shift" everything left and discard trailing garbage, so all invariants remain the same. Ok(unsafe { ListArray::new_unchecked(elements, adjusted_offsets, self.list_validity()) }) } }