Skip to content

Commit 12a04f6

Browse files
committed
Optimize FixedSizeList take results
Signed-off-by: Daniel King <dan@spiraldb.com>
1 parent c81221b commit 12a04f6

1 file changed

Lines changed: 10 additions & 6 deletions

File tree

  • vortex-array/src/arrays/fixed_size_list/compute

vortex-array/src/arrays/fixed_size_list/compute/take.rs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ use crate::dtype::IntegerPType;
2727
use crate::dtype::Nullability;
2828
use crate::executor::ExecutionCtx;
2929
use crate::match_each_integer_ptype;
30+
use crate::optimizer::ArrayOptimizer;
3031
use crate::validity::Validity;
3132

3233
/// Take implementation for [`FixedSizeListArray`].
@@ -79,10 +80,11 @@ fn take_empty_fsl(
7980

8081
// SAFETY: empty output needs no child values; otherwise the index validity mask proves every
8182
// output row is null. Placeholder child elements have the exact length required by FSL.
82-
Ok(unsafe {
83+
unsafe {
8384
FixedSizeListArray::new_unchecked(new_elements, array.list_size(), new_validity, new_len)
8485
}
85-
.into_array())
86+
.into_array()
87+
.optimize()
8688
}
8789

8890
fn take_non_empty_fsl(
@@ -136,15 +138,16 @@ fn take_non_empty_degenerate_fsl(
136138

137139
// SAFETY: degenerate FSL inputs have no elements, valid index payloads were checked against
138140
// the source length, and `Validity::take` produces validity for `new_len`.
139-
Ok(unsafe {
141+
unsafe {
140142
FixedSizeListArray::new_unchecked(
141143
array.elements().clone(),
142144
array.list_size(),
143145
new_validity,
144146
new_len,
145147
)
146148
}
147-
.into_array())
149+
.into_array()
150+
.optimize()
148151
}
149152

150153
fn take_non_empty_non_degenerate_fsl<I: IntegerPType>(
@@ -167,10 +170,11 @@ fn take_non_empty_non_degenerate_fsl<I: IntegerPType>(
167170

168171
// SAFETY: `new_elements` has `new_len * list_size` elements. `new_validity` is either
169172
// non-nullable or was produced by `Validity::take` for `new_len`.
170-
Ok(unsafe {
173+
unsafe {
171174
FixedSizeListArray::new_unchecked(new_elements, array.list_size(), new_validity, new_len)
172175
}
173-
.into_array())
176+
.into_array()
177+
.optimize()
174178
}
175179

176180
fn take_non_empty_non_degenerate_elements<I: IntegerPType>(

0 commit comments

Comments
 (0)