vortex_array/arrays/extension/compute/
take.rs1use vortex_error::VortexResult;
5
6use crate::Array;
7use crate::ArrayRef;
8use crate::ExecutionCtx;
9use crate::IntoArray;
10use crate::arrays::ExtensionArray;
11use crate::arrays::ExtensionVTable;
12use crate::arrays::TakeExecute;
13
14impl TakeExecute for ExtensionVTable {
15 fn take(
16 array: &ExtensionArray,
17 indices: &dyn Array,
18 _ctx: &mut ExecutionCtx,
19 ) -> VortexResult<Option<ArrayRef>> {
20 let taken_storage = array.storage().take(indices.to_array())?;
21 Ok(Some(
22 ExtensionArray::new(
23 array
24 .ext_dtype()
25 .with_nullability(taken_storage.dtype().nullability()),
26 taken_storage,
27 )
28 .into_array(),
29 ))
30 }
31}